blktrace命令来自于英文词组“block trace”的缩写,其功能是用于分析磁盘I/O负载情况。查看Linux系统磁盘的负载情况,我们一般会使用iostat监控工具,其中很重要的参数就是await,await表示单个I/O所需的平均时间,但它同时也包含了I/O Scheduler所消耗的时间和硬件所消耗的时间,所以不能作为硬件性能的指标。
那如何才能分辨一个io从下发到返回整个时间上,是硬件层耗时多还是在io调度上耗时多呢?如何查看io在各个时间段所消耗的时间呢?那么,blktrace命令在这种场合就能派上用场,因为它能记录I/O所经历的各个步骤,从中可以分析是IO Scheduler慢还是硬件响应慢,以及各个时间段所用时间。
语法格式:blktrace [参数] 设备名
常用参数:
-A hex-mask | 设置过滤信息mask成十六进制mask |
-a mask | 添加mask到当前的过滤器 |
-b size | 指定缓存大小for提取的结果,默认为512KB |
-d dev | 添加一个设备追踪 |
-k | 杀掉正在运行的追踪 |
-n num-sub | 指定缓冲池大小,默认为4个子缓冲区 |
-o file | 指定输出文件的名字 |
-r rel-path | 指定的debugfs挂载点 |
-w seconds | 设置运行的时间 |
参考实例
分析指定磁盘的I/O情况:
[root@linuxcool ~]# blktrace -d /dev/sda
设置运行的时间为30秒,分析指定磁盘的I/O情况:
[root@linuxcool ~]# blktrace -w 30 -d /dev/sda === sda === CPU 0: 10 events, 1 KiB data CPU 1: 0 events, 0 KiB data CPU 2: 0 events, 0 KiB data CPU 3: 0 events, 0 KiB data CPU 4: 0 events, 0 KiB data CPU 5: 0 events, 0 KiB data CPU 6: 0 events, 0 KiB data CPU 7: 0 events, 0 KiB data CPU 8: 150 events, 8 KiB data CPU 9: 10 events, 1 KiB data CPU 10: 1 events, 1 KiB data CPU 11: 0 events, 0 KiB data CPU 12: 0 events, 0 KiB data ………………省略部分输出信息………………
分析指定磁盘的I/O情况,并指定输出文件名称:
[root@linuxcool ~]# blktrace -d /dev/sda -o file [root@linuxcool ~]# ls file.blktrace.* file.blktrace.0 file.blktrace.14 file.blktrace.2 file.blktrace.4 file.blktrace.1 file.blktrace.15 file.blktrace.20 file.blktrace.5 file.blktrace.10 file.blktrace.16 file.blktrace.21 file.blktrace.6 file.blktrace.11 file.blktrace.17 file.blktrace.22 file.blktrace.7 file.blktrace.12 file.blktrace.18 file.blktrace.23 file.blktrace.8 file.blktrace.13 file.blktrace.19 file.blktrace.3 file.blktrace.9 ………………省略部分输出信息………………