bpftrace adalah bahasa penelusuran tingkat tinggi untuk Linux. bpftrace menggunakan LLVM sebagai backend untuk mengkompilasi skrip ke bytecode eBPF dan memanfaatkan libbpf dan bcc untuk berinteraksi dengan subsistem BPF Linux, serta kemampuan penelusuran Linux yang ada: penelusuran dinamis kernel (kprobes), penelusuran dinamis tingkat pengguna (uprobes) ), tracepoints, dll. Bahasa bpftrace terinspirasi oleh awk, C, dan tracer pendahulunya seperti DTrace dan SystemTap. bpftrace dibuat oleh Alastair Robertson.
Cara Memasang dan Membangun
Manual / Panduan Referensi
tutorial
Contoh Satu Liner
Video
Peralatan
Menyumbang
Perkembangan
Mendukung
Panduan migrasi
Jenis pemeriksaan
Plugin
Lisensi
Kalimat berikut menunjukkan kemampuan yang berbeda:
# Files opened by thread name bpftrace -e 'tracepoint:syscalls:sys_enter_open { printf("%s %sn", comm, str(args->filename)); }' # Syscall count by thread name bpftrace -e 'tracepoint:raw_syscalls:sys_enter { @[comm] = count(); }' # Read bytes by thread name: bpftrace -e 'tracepoint:syscalls:sys_exit_read /args->ret/ { @[comm] = sum(args->ret); }' # Read size distribution by thread name: bpftrace -e 'tracepoint:syscalls:sys_exit_read { @[comm] = hist(args->ret); }' # Show per-second syscall rates: bpftrace -e 'tracepoint:raw_syscalls:sys_enter { @ = count(); } interval:s:1 { print(@); clear(@); }' # Trace disk size by PID and thread name bpftrace -e 'tracepoint:block:block_rq_issue { printf("%d %s %dn", pid, comm, args->bytes); }' # Count page faults by thread name bpftrace -e 'software:faults:1 { @[comm] = count(); }' # Count LLC cache misses by thread name and PID (uses PMCs): bpftrace -e 'hardware:cache-misses:1000000 { @[comm, pid] = count(); }' # Profile user-level stacks at 99 Hertz for PID 189: bpftrace -e 'profile:hz:99 /pid == 189/ { @[ustack] = count(); }' # Files opened in the root cgroup-v2 bpftrace -e 'tracepoint:syscalls:sys_enter_openat /cgroup == cgroupid("/sys/fs/cgroup/unified/mycg")/ { printf("%sn", str(args->filename)); }'
Skrip yang lebih kuat dapat dengan mudah dibuat. Lihat Alat untuk contohnya.
Catatan: beberapa konten dalam video ini mungkin sudah ketinggalan zaman, panduan referensi terkini adalah sumber kebenarannya.
Menjadikan bpftrace lebih bertenaga - 2023
Resep Bpftrace: 5 Masalah Nyata Terpecahkan - 2023
Pelacakan Linux menjadi lebih sederhana dengan bpftrace - 2022
Program bpftrace yang dikompilasi sebelumnya - 2021
Memulai observasi BPF - 2021
internal bpftrace - 2020
Menggunakan bpftrace dengan Performance Co-Pilot & Grafana - 2020
Pengantar bahasa penelusuran bpftrace - 2020
Kontribusi dipersilahkan! Silakan lihat bagian pengembangan di bawah untuk informasi lebih lanjut. Untuk alat bpftrace baru, silakan tambahkan ke repositori alat pengguna baru. Alat-alat yang ada di repositori ini adalah koleksi kecil yang dikurasi oleh pengelola bpftrace.
Laporan bug dan permintaan fitur: Pelacak Masalah
Pengembangan IRC: #bpftrace di irc.oftc.net
Masalah pertama yang bagus
Pedoman Pengkodean
Panduan Pengembangan
Peta Jalan Pembangunan
kabur
Nix
Proses Rilis
Tes
Untuk bantuan/diskusi tambahan, silakan gunakan halaman diskusi kami.
Kami juga mengadakan jam kantor reguler yang terbuka untuk umum.
Lihat Manual untuk lebih jelasnya.
bpftrace memiliki beberapa plugin/definisi, yang mengintegrasikan sintaksisnya ke dalam editor Anda.
Emacs
Vim
VS Kode
Hak Cipta 2019 Alastair Robertson
Berlisensi di bawah Lisensi Apache, Versi 2.0 ("Lisensi"); Anda tidak boleh menggunakan file ini kecuali sesuai dengan Lisensi. Anda dapat memperoleh salinan Lisensi di
http://www.apache.org/licenses/LICENSE-2.0
Kecuali diwajibkan oleh undang-undang yang berlaku atau disetujui secara tertulis, perangkat lunak yang didistribusikan berdasarkan Lisensi didistribusikan berdasarkan DASAR "APA ADANYA", TANPA JAMINAN ATAU KETENTUAN DALAM BENTUK APAPUN, baik tersurat maupun tersirat. Lihat Lisensi untuk bahasa tertentu yang mengatur izin dan batasan berdasarkan Lisensi.