短笔记

指标不够用时的几条 bpftrace 一句话

← 全部文章

Prometheus 告诉你“慢了”,bpftrace 告诉你“谁慢、慢在哪”。

哪个进程在写盘

1
bpftrace -e 'tracepoint:block:block_rq_issue { @[comm, pid] = sum(args->bytes); }'

跑 30 秒后 Ctrl+C 看汇总。我用这条抓出过每小时写 40GB 的日志轮转任务。

TCP 重传归因

1
bpftrace -e 'kprobe:tcp_retransmit_skb { @[comm] = count(); }'

慢系统调用排行

1
2
3
bpftrace -e 'tracepoint:raw_syscalls:sys_enter { @ts[tid] = nsecs; }
tracepoint:raw_syscalls:sys_exit /@ts[tid]/ {
  @us[comm] = hist((nsecs - @ts[tid]) / 1000); delete(@ts[tid]); }'