地方エンジニアの学習日記

興味ある技術の雑なメモだったりを書いてくブログ。たまに日記とガジェット紹介。

いつか使えそうなbpftrace1行プログラミング

# シグナルの送信を検知する
$ bpftrace -e 't:syscalls:sys_enter_kill {time("%H:%M:%s "); printf("%s (PID %d) send a SIG %d to `PID %d\n", comm, pid, args->sig, args->pid);}'

# pid別にシステムコールの回数を調べる
$ bpftrace -e 'tracepoint:raw_syscalls:sys_enter {@[pid, comm] = count();}'

# プロセス別のページフォルトの回数を調べる
$ bpftrace -e 'tracepoint:exceptions:page_fault_user {@[ustack, comm] = count();}'

# 引数付きで新プロセスをトレースする
$ bpftrace -e 'tracepoint:syscalls:sys_enter_execve { join(args->argv);}'

# malloc呼び出しの容量をプロセス別に表示
$ bpftrace -e 'uprobe:/usr/lib/x86_64-linux-gnu/libc.so.6:malloc {@[comm] = sum(arg0)}'

参考

詳解 システム・パフォーマンス 第2版 | Brendan Gregg, 西脇 靖紘, 長尾 高弘 |本 | 通販 | Amazon