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
………………省略部分输出信息………………
Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。