3 poin oleh GN⁺ 2023-12-08 | 1 komentar | Bagikan ke WhatsApp

Pengantar alat pelacakan

  • Memperkenalkan berbagai metode pelacakan berdasarkan antusiasme dan pengalaman terhadap tracing
  • Termasuk 2 alat pelacakan baru dan menarik
  • Inti tracing: mengumpulkan data bertimestamp yang terjadi di sistem dan memvisualisasikannya dalam UI linimasa

Memvisualisasikan data dengan mudah di UI linimasa

  • Visualisasi data event dalam format JSON sederhana menggunakan Chromium Event JSON Format
  • Memeriksa file tracing melalui viewer Perfetto atau Catapult dari Google
  • Menggunakan utilitas Python untuk mengubah file trace menjadi tautan yang dapat diklik dan dibagikan

Format lanjutan: Fuchsia Trace Format dan Perfetto Protobuf

  • Fuchsia Trace Format (FTF): format biner sederhana dan ringkas untuk file trace berukuran besar
  • Perfetto Protobuf: format ringkas yang mendukung lebih banyak fitur, dapat dibuat melalui pustaka Protobuf

Beragam alat pelacakan

  • Memperkenalkan berbagai alat visualisasi trace seperti Speedscope, pprof, dan Rerun
  • Menyebut viewer profiler seperti Trace Compass dan Firefox Profiler

Metode pelacakan

  • Memperkenalkan metode pelacakan tingkat rendah seperti hardware breakpoint, perf, dan scripting GDB
  • Melacak eksekusi program dengan memanfaatkan Intel Processor Trace
  • magic-trace: alat pembuat file trace untuk memvisualisasikan pemanggilan fungsi

Profiler tracing berbasis instrumentasi

  • Membandingkan profiler tracing berbasis instrumentasi seperti Tracy, Optick, dan Perfetto
  • Menekankan pentingnya data event yang menyertakan informasi tambahan

eBPF

  • Memperkenalkan subsistem eBPF untuk pelacakan menggunakan kernel Linux
  • Memperkenalkan alat pelacakan eBPF seperti BCC, bpftrace, dan ply

Contoh eBPF: pelacakan paket dan event pengguna berbasis Perfetto dari Anthropic

  • Menggabungkan BCC dan visualisasi Perfetto untuk menganalisis tail latency pada kode jaringan
  • Pelacakan event user-space dengan eBPF dan optimasi pemrosesan event melalui helper C

Instrumentasi biner

  • Memperkenalkan metode instrumentasi biner yang digunakan saat akses ke source code tidak memungkinkan
  • Menjelaskan alat seperti bpftime, E9Patch, dan Frida

Distributed tracing

  • Menyebut solusi seperti OpenTelemetry, Zipkin, dan Odigos untuk pelacakan antar layanan

Sampling profiler

  • Memperkenalkan profiler yang secara berkala mengambil sampel seluruh call stack program
  • Menggunakan UI dengan sumbu waktu seperti Speedscope dan Samply

Instrumentasi QEMU

  • Emulasi penuh dan hooking di QEMU yang digunakan saat semua alat pelacakan lain gagal
  • Memperkenalkan alat seperti Cannoli, QEMU TCG Plugins, dan usercorn

Opini GN⁺

Hal terpenting dari tulisan ini adalah bahwa ia menyediakan katalog luas tentang metode pelacakan yang dapat digunakan untuk menyelesaikan berbagai jenis masalah. Tulisan ini memperkenalkan beragam alat dan metode pelacakan pada tingkat yang cukup mudah dipahami bahkan oleh software engineer pemula, sehingga sangat bermanfaat dan menarik bagi siapa pun yang tertarik pada tracing. Secara khusus, contoh yang menggabungkan pelacakan eBPF dan visualisasi Perfetto melalui kasus nyata menunjukkan kemungkinan penerapan di dunia kerja, dan dapat memberikan wawasan baru kepada para pembaca.

1 komentar

 
GN⁺ 2023-12-08
Komentar Hacker News
  • Pendapat pengembang Spall:

    • Spall adalah salah satu profiler ringan yang disebutkan dalam tulisan tersebut.
    • Postingan blog penulis tentang 'pohon urutan implisit' sangat mengesankan, dan menarik untuk melihat sudut pandang orang lain tentang pohon untuk trace berukuran besar.
    • Pohon 4-ary berurutan eytzinger tidak bermasalah menangani lebih dari 3 miliar fungsi bahkan di atas 165fps.
    • Saat ini sedang mengerjakan kompresi delta timestamp, untuk memuat event dalam ruang yang lebih kecil.
    • Berharap build native Spall dapat menangani 10 miliar event dengan RAM 128GB.
  • Rekomendasi ETW untuk pekerja aplikasi Windows:

    • Merekomendasikan Event Tracing for Windows(ETW) kepada orang-orang yang mengerjakan aplikasi Windows.
    • Blog Bruce Dawson adalah titik awal terbaik untuk ETW.
  • Ikhtisar tentang solusi open source:

    • Ini adalah ikhtisar yang cukup bagus tentang solusi open source di bidang ini.
    • Area tracing penting berupa debugging perjalanan waktu tidak dibahas.
    • Ada solusi menarik yang memanfaatkan hardware trace, instrumentasi, dan replay deterministik.
    • Akan lebih baik jika ada integrasi visualisasi yang memungkinkan debugging dengan kembali ke titik tertentu dalam program dan merekonstruksi memori secara menyeluruh.
  • Cara perekrutan di Anthropic:

    • Tawaran terakhir tentang kesempatan bekerja dengan Tristan di Anthropic sangat menarik.
    • Tristan menjelaskan dengan baik apa yang akan dikerjakan.
    • Rasanya akan lebih baik jika ada lebih banyak tangkapan layar trace di postingan blog.
  • Teknik korelasi program Python dan paket:

    • Kekaguman terhadap teknik untuk menemukan korelasi antara event user-space program Python dan paket dengan melacak system call dengan argumen tertentu.
  • Pengalaman tim pengembang plugin IDE:

    • Sedang mengembangkan plugin IDE yang menambahkan fungsi debugger tradisional ke aplikasi yang sedang berjalan di produksi.
    • Memungkinkan pengguna menganalisis variabel arbitrer saat runtime untuk memahami apa yang terjadi di dalam kode.
    • Plugin ini gratis.
  • Kebutuhan industri akan profiling biaya eksekusi JavaScript:

    • Diperlukan cara yang lebih baik untuk memprofilkan biaya eksekusi JavaScript secara deterministik.
    • Pernah ada upaya menggunakan Linux perf di Chromium, tetapi perubahan tersebut dihapus.
    • Ingin tahu tips tentang cara mengukur biaya JavaScript secara deterministik di CI.
  • Penyebutan dtrace dan omelan bcantrill:

    • Penulis menyebut dtrace secara singkat.
    • Merekomendasikan untuk melihat omelan terbaru bcantrill tentang masalah bpftrace yang diam-diam kehilangan event dan mengapa dtrace tidak demikian.
  • Ucapan terima kasih untuk alat-alat yang berguna:

    • Ungkapan terima kasih atas alat-alat berguna yang disebutkan dalam tulisan.