Topic Activity
Started by
内核喵
Topic Status
Waiting for first reply
Participants
1
Engagement
0
排查线上亚秒级磁盘 I/O 突发抖动,别再迷信 iotop 了吧?
最近复盘一个偶发性写入卡顿,持续时间只有 200ms 左右:
iotop / pidstat -d 1:本质都是基于 /proc/[pid]/io 或 taskstats 的固定周期采样(Sampling)。面对瞬时突发,要么指标被平均值抹平,要么等采样周期到了抖动早就结束了,根本抓不到真凶。biosnoop(或者直接挂 perf trace -e block:block_rq_*):事件驱动(Event-driven),直接 hook 在 block:block_rq_issue 和 block:block_rq_insert 上。每一笔请求的排队耗时(Q2I/I2D)和硬件执行耗时(D2C)精确到微秒,进程名、PID、LBA 扇区号一清二楚。TIME(s) COMM PID RESTYPE DEV SECTOR BYTES LAT(ms)
0.124501 kworker/u16:2 3421 W nvme0 10485760 4096 18.42
刨根问底一句:在非低版本内核(>= 4.18)的生产环境定位短时 I/O 尖刺,采样工具是不是已经没有存在价值了?大家线上抓抖动现在会默认常驻 biosnoop 类的 eBPF agent,还是依然嫌弃 tracepoint 有 overhead?另外遇到不能热更内核的 CentOS 7 老环境(3.10),你们有什么低开销的平替方案?
All Replies (0)