blktrace version v2.0.0
注意:在blkparse
输出中,第六列中的m
表示该行是调度程序信息。
在Ubuntu 16.04上ext4
我可以看到IO Scheduler消息,blktrace -d /dev/sda -o - | blkparse -i -
8,0 3 1 0.000000000 24714 A WS 76519424 + 2048 <- (8,1) 76517376
8,0 3 2 0.000000861 24714 Q WS 76519424 + 2048 [TaskSchedulerFo]
8,0 3 3 0.000005084 24714 X WS 76519424 / 76520768 [TaskSchedulerFo]
8,0 3 4 0.000008962 24714 G WS 76519424 + 1344 [TaskSchedulerFo]
8,0 3 5 0.000009379 24714 P N [TaskSchedulerFo]
8,0 3 6 0.000012021 24714 G WS 76520768 + 704 [TaskSchedulerFo]
8,0 3 7 0.000012622 24714 I WS 76519424 + 1344 [TaskSchedulerFo]
8,0 3 0 0.000015209 0 m N cfq24714SN /user.slice insert_request
8,0 3 0 0.000016074 0 m N cfq24714SN /user.slice add_to_rr
8,0 3 0 0.000017548 0 m N cfq24714SN /user.slice preempt
8,0 3 0 0.000018184 0 m N cfq25055SN /user.slice slice expired t=1
8,0 3 0 0.000018982 0 m N cfq25055SN /user.slice resid=-2643710186
8,0 3 0 0.000020125 0 m N /user.slice served: vt=247310740068 min_vt=247310580285
8,0 3 0 0.000021297 0 m N cfq25055SN /user.slice sl_used=33325195 disp=13 charge=13 iops=1 sect=1088
8,0 3 0 0.000021822 0 m N cfq25055SN /user.slice del_from_rr
8,0 3 0 0.000023767 0 m N cfq workload slice:100000000
8,0 3 0 0.000024496 0 m N cfq24714SN /user.slice set_active wl_class:0 wl_type:1
8,0 3 0 0.000025395 0 m N cfq24714SN /user.slice dispatch_insert
8,0 3 0 0.000026232 0 m N cfq24714SN /user.slice dispatched a request
8,0 3 0 0.000026818 0 m N cfq24714SN /user.slice activate rq, drv=1
8,0 3 8 0.000027030 24714 D WS 76519424 + 1344 [TaskSchedulerFo]
8,0 3 9 0.000037848 24714 U N [TaskSchedulerFo] 1
8,0 3 10 0.000038118 24714 P N [TaskSchedulerFo]
8,0 3 11 0.000048153 24714 A WS 76521472 + 264 <- (8,1) 76519424
8,0 3 12 0.000048340 24714 Q WS 76521472 + 264 [TaskSchedulerFo]
8,0 3 13 0.000049444 24714 M WS 76521472 + 264 [TaskSchedulerFo]
8,0 3 14 0.000050486 24714 I WS 76520768 + 968 [TaskSchedulerFo]
8,0 3 0 0.000051332 0 m N cfq24714SN /user.slice insert_request
8,0 3 15 0.000051755 24714 U N [TaskSchedulerFo] 1
8,0 3 0 0.000052418 0 m N cfq24714SN /user.slice dispatch_insert
8,0 3 0 0.000053068 0 m N cfq24714SN /user.slice dispatched a request
8,0 3 0 0.000053604 0 m N cfq24714SN /user.slice activate rq, drv=2
8,0 3 16 0.000053721 24714 D WS 76520768 + 968 [TaskSchedulerFo]
8,0 2 1 0.001844211 0 C WS 76519424 + 1344 [0]
8,0 2 0 0.001849143 0 m N cfq24714SN /user.slice complete rqnoi
xfs
上的,我看不到IO Scheduler消息,blktrace -d /dev/sdb -o - | blkparse -i -
8,16 25 1 0.000000000 11966 Q R 73400472 + 128 [fio]
8,16 25 2 0.000006237 11966 G R 73400472 + 128 [fio]
8,16 25 3 0.000007806 11966 P N [fio]
8,16 25 4 0.000010836 11966 I R 73400472 + 128 [fio]
8,16 25 5 0.000011878 11966 U N [fio] 1
8,16 25 6 0.000013900 11966 D R 73400472 + 128 [fio]
8,16 10 1 0.008284979 0 C R 73400472 + 128 [0]
8,16 10 2 0.008343574 11966 Q R 73400600 + 128 [fio]
8,16 10 3 0.008345976 11966 G R 73400600 + 128 [fio]
8,16 10 4 0.008346908 11966 P N [fio]
8,16 10 5 0.008348926 11966 I R 73400600 + 128 [fio]
8,16 10 6 0.008349651 11966 U N [fio] 1
8,16 10 7 0.008350694 11966 D R 73400600 + 128 [fio]
8,16 8 1 0.008771249 0 C R 73400600 + 128 [0]
答案 0 :(得分:1)
虽然设置之间存在程序版本差异(在CentOS 7 blktrace is version 1.0.5中并且内核基于3.10而在Ubuntu 16.04 blktrace is version 1.1.0且内核可能在4.4-4.10之间),真正的点可能是在其中一条评论中,一直到what was asked(但遗憾的是没有得到答复):
正在使用的[I / O]调度程序
如果我们看一下你的m行:
8,0 3 0 0.000015209 0 m N cfq24714SN /user.slice insert_request
我们可以看到它是textual message(因此是m)并且它可能来自CFQ I/O scheduler(因此消息本身的cfq前缀)。如果用于CentOS 7设置上的/dev/sdb
设备的I / O调度程序不是CFQ(例如因为正在使用noop I/O scheduler),那么我们不能指望出现类似的消息。
所以把这个带回到问题的标题:
blkparse如何显示IO Scheduler消息
如果I / O调度程序想要它可以发送自由格式blktrace
文本(例如,请参阅blk_add_trace_msg()
,其中有linux/blktrace_api.h
),但并非所有I / O调度程序都执行(例如,请参阅block/cfq-iosched.c,其中甚至不包含function addUp(values) {
var total = 0;
for (var i = 0; i < values.length; i++) {
for (var j = 0; j < values[i].length; j++)
total = total + parseInt(values[i][j]);
}
return total;
}
标题。默认情况下block/noop-iosched.c。