blktrace命令来自英文词组block trace的缩写,其功能是分析磁盘I/O负载情况。在查看Linux系统磁盘的负载情况时,我们一般会使用iostat监控工具,其中很重要的参数就是await。await表示单个I/O所需的平均时间,但它同时也包含了I/O 调度器所消耗的时间和硬件所消耗的时间,所以不能作为硬件性能的指标。

那么,如何才能分辨一个I/O从下发到返回的整个时间内,是硬件耗时多还是在I/O调度耗时多呢?如何查看I/O在各个时间段所消耗的时间呢?blktrace命令在这种场合就能派上用场了,因为它能记录I/O所经历的各个步骤,从中可以分析是IO 调度器慢还是硬件响应慢,以及它们各自所用的时间。

语法格式:blktrace 参数 设备名

常用参数:

-a添加到当前过滤器 -l设置要使用的缓冲区数量
-A设置过滤信息为十六进制掩码-n设置缓冲池大小
-b设置缓存大小-o设置输出文件的名字
-d设置设备追踪-r设置debugfs挂载点
-D设置输入文件的基本名称-v显示版本信息
-h设置主机名-w设置运行的时间
-k杀掉正在运行的追踪  

参考示例

分析指定磁盘的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认证架构师,教育学(计算机专业硕士)。