bpftrace は、Linux 用の高レベル トレース言語です。 bpftrace は、スクリプトを eBPF バイトコードにコンパイルするバックエンドとして LLVM を使用し、Linux BPF サブシステムと対話するために libbpf および bcc を使用します。また、既存の Linux トレース機能 (カーネル動的トレース (kprobes)、ユーザーレベルの動的トレース (uprobes)) と対話します。 bpftrace 言語は、awk、C、および DTrace や「システム」をタップします。 bpftrace は Alastair Robertson によって作成されました。
インストールとビルドの方法
マニュアル/リファレンスガイド
チュートリアル
ワンライナーの例
動画
ツール
貢献する
発達
サポート
移行ガイド
プローブの種類
プラグイン
ライセンス
次のワンライナーは、さまざまな機能を示しています。
# 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)); }'
より強力なスクリプトを簡単に構築できます。例については、「ツール」を参照してください。
注: これらのビデオの内容の一部は古くなっている可能性があります。最新のリファレンス ガイドが信頼できる情報源です。
bpftrace のさらなる強力化 - 2023
Bpftrace レシピ: 解決された 5 つの実際の問題 - 2023
bpftrace で Linux トレースを簡素化 - 2022
事前にコンパイルされた bpftrace プログラム - 2021
BPF 可観測性の入門 - 2021
bpftrace の内部 - 2020
Performance Co-Pilot および Grafana での bpftrace の使用 - 2020
bpftrace トレース言語の概要 - 2020
貢献は大歓迎です!詳細については、以下の開発セクションを参照してください。新しい bpftrace ツールの場合は、新しい user-tools リポジトリに追加してください。このリポジトリに存在するツールは、bpftrace メンテナーによって厳選された小さなコレクションです。
バグレポートと機能リクエスト: Issue Tracker
開発 IRC: #bpftrace (irc.oftc.net)
良い最初の問題
コーディングガイドライン
開発ガイド
開発ロードマップ
ファジング
ニックス
リリースプロセス
テスト
さらにヘルプやディスカッションが必要な場合は、ディスカッション ページをご利用ください。
また、一般公開の通常オフィスアワーも開催しております。
詳細についてはマニュアルを参照してください。
bpftrace には、構文をエディターに統合するいくつかのプラグイン/定義があります。
Emacs
ヴィム
VSコード
著作権 2019 アラステア ロバートソン
Apache License バージョン 2.0 (「ライセンス」) に基づいてライセンスされています。ライセンスに準拠する場合を除き、このファイルを使用することはできません。ライセンスのコピーは次の場所で入手できます。
http://www.apache.org/licenses/LICENSE-2.0
適用される法律で義務付けられている場合または書面による同意がない限り、ライセンスに基づいて配布されるソフトウェアは、明示または黙示を問わず、いかなる種類の保証や条件もなく、「現状のまま」で配布されます。ライセンスに基づく許可と制限を規定する特定の言語については、ライセンスを参照してください。