blktrace 命令
语法
blktrace -d dev [ -r debugfs_path ] [ -o output ] [-k ] [ -w time ] [ -a action ] [ -A action_mask ] [ -v ]
命令选项
blktrace 是一个块层 IO 跟踪命令
$ blktrace -help
-d <dev> | --dev=<dev> 填写一个跟踪的磁盘,必填选项
[ -r <debugfs path> | --relay=<debugfs path> ] 指定 debugfs 的挂载路径
[ -o <file> | --output=<file>] 输出的文件叫什么,默认值为 device.blktrace.cpu。 -o - 可以把输出打印屏幕上
[ -D <dir> | --output-dir=<dir> 输出的目录
[ -w <time> | --stopwatch=<time>] 跟踪的时长,默认单位为秒
[ -a <action field> | --act-mask=<action field>] 跟踪哪种磁盘行为
[ -A <action mask> | --set-mask=<action mask>] 通过 16 位掩码设置跟踪哪种磁盘行为
[ -b <size> | --buffer-size] 缓存区的大小,默认为 512KB,默认单位为 K
[ -n <number> | --num-sub-buffers=<number>] 默认缓存区的个数,默认为 4 个
[ -l | --listen] 开启监听(blktrace 服务器模式)
[ -h <hostname> | --host=<hostname>] 客户端模式,要链接哪个主机上
[ -p <port number> | --port=<port number>] 网络模式要使用哪个端口默认为 8462
[ -s | --no-sendfile] 在网络客户端模式下,不使用 sendfile() 系统调用来传输数据
[ -I <devs file> | --input-devs=<devs file>] 输入文件,将文件作为设置
[ -v <version> | --version] 打印版本
[ -V <version> | --version] 打印版本
-d Use specified device. May also be given last after options 跟踪一个设备,可以放在最后
-r Path to mounted debugfs, defaults to /sys/kernel/debug 指定 debugfs 的挂载路径,默认指向/sys/kernel/debug
-o File(s) to send output to 要输出发送到哪个文件中
-D Directory to prepend to output file names 输出文件在哪个目录中
-w Stop after defined time, in seconds 要跟踪多少秒
-a Only trace specified actions. See documentation 仅仅跟踪一个磁盘行为 可以添加多个-a
-A Give trace mask as a single value. See documentation 通过 16 位掩码设置跟踪哪种磁盘行为
-b Sub buffer size in KiB (default 512) 缓冲区大小,默认为 512K,单位为 K
-n Number of sub buffers (default 4) 缓冲区个数,默认为 4 个
-l Run in network listen mode (blktrace server) 运行 blktrace 为服务端模式,打开监听
-h Run in network client mode, connecting to the given host 运行 blktrace 为客户端模式,-h 后面加服务端的主机 IP 地址
-p Network port to use (default 8462) 网络模式的端口,默认为 8462
-s Make the network client NOT use sendfile() to transfer data 网络模式下发送数据不使用 sendfile() 系统调用
-I Add devices found in <devs file> 在文件中查找设备(不知道什么意思)
-v Print program version info 打印版本信息
-V Print program version info 打印版本信息
一些详细的解释
-a
可以添加作为过滤的选项
barrier: barrier attribute
complete: completed by driver
fs: requests
issue: issued to driver
pc: packet command events
queue: queue operations
read: read traces
requeue: requeue operations
sync: synchronous attribute
write: write traces
notify: trace messages
drv_data: additional driver specific trace
blktrace 区分两种类型的块层请求,文件系统和 SCSI 命令。前者称为 fs 请求,后者称为 pc 请求。文件系统请求是正常的读/写操作,即以给定大小从特定磁盘位置进行任何类型的读或写操作。这些请求通常来自用户进程,但也可能由 vm 将脏数据刷新到磁盘或文件系统将超级或日志块同步到磁盘来启动。pc 请求是 SCSI 命令。blktrace 将命令数据块作为有效载荷发送,以便 blkparse 可以对其进行解码。
举例
要跟踪设备/dev/sda上的 I/O 并将输出解析为人类可读的形式,请使用以下命令:
$ blktrace -d /dev/sda -o - |blkparse -i -
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

上一篇: blkid 命令
下一篇: blkparse 命令
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论