blktrace命令 – 分析磁盘IO

在Linux系统上,查看磁盘的负载情况,咱们一般使用iostat监控工具。其中很重要的参数就是await,await表示单个I/O所需的平均时间,但它同时包含了I/O Scheduler所消耗的时间和硬件所消耗的时间,所以不能作为硬件性能的指标。那如何才能分辨一个io从下发到返回整个时间上,是硬件层耗时多还是在io调度上耗时多呢?如何查看io在各个时间段所消耗的时间呢?那么,blktrace在这种场合就能派上用场,因为它能记录I/O所经历的各个步骤,从中可以分析是IO Scheduler慢还是硬件响应慢,以及各个时间段所用时间。

blktrace的原理:

一个I/O请求进入block layer之后,可能会经历下面的过程:

  • Remap: 可能被DM(Device Mapper)或MD(Multiple Device, Software RAID) remap到其它设备
  • Split: 可能会因为I/O请求与扇区边界未对齐、或者size太大而被分拆(split)成多个物理I/O
  • Merge: 可能会因为与其它I/O请求的物理位置相邻而合并(merge)成一个I/O
  • 被IO Scheduler依照调度策略发送给driver
  • 被driver提交给硬件,经过HBA、电缆(光纤、网线等)、交换机(SAN或网络)、最后到达存储设备,设备完成IO请求之后再把结果发回。

语法格式: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 设置运行的时间

参考实例

centos7安装blktrace(会自动生成blktrace blkparse btt 3个工具,其中,blktrace收集数据,blkparce分析数据,btt汇总数据):

[root@xtuos.com ~]# yum install blktrace -y

使用blktrace需要挂载debugfs:

[root@xtuos.com ~]# mount -t debugfs debugfs /sys/kernel/debug

利用blktrace查看实时数据的方法,比如要看的硬盘是sdb:

[root@xtuos.com ~]# blktrace -d /dev/sdb -o – | blkparse -i –

分析磁盘/dev/sdc的IO情况:

[root@xtuos.com ~]# blktrace -d /dev/sdc

生成数据: 应用结束后,手动终止监控,会生成cpu数量的文件

[root@xtuos.com ~]# blkparse -i sdc -d sdc.blktrace.bin

原创文章,作者:云东方,如若转载,请注明出处:https://www.yundongfang.com/1715.html

(0)
上一篇 2021年3月19日 上午5:36
下一篇 2021年3月19日 上午5:42

相关推荐

  • chronyc命令 – 设置时间与时钟服务器同步

    chrony是一个开源的自由软件,它能保持系统时钟与时钟服务器(NTP)同步,让时间保持精确。它由两个程序组成:chronyd和chronyc。 chronyd是一个后台运行的守护…

    Linux命令 2021年3月18日
  • lpc命令 – 打印机控制程序

    lpc命令是命令行方式打印机控制程序,有5个内置命令。 语法格式: lpc [参数] 常用参数: ?/help 显示帮助 exit/quit 退出打印机命令行 status 显示打…

    Linux命令 2021年3月18日
  • fc命令 – 编辑并执行历史命令

    EXTENDED_HISTORY环境变量影响fc命令的执行,如果变量设置为ON,则记录时间,否则不记录时间。 语法格式: fc [参数] 常用参数: -e 指定用来编辑命令的文本…

    Linux命令 2021年3月18日
  • rdate命令 – 显示其他主机的日期与时间

    执行rdate命令,向局域网或者网络上其他主机询问系统时间并打印显示出来。也可以将其他主机的时间同步为本机时间。 语法格式:rdate[参数] [IP] 常用参数: -p 显示远端…

    Linux命令 2021年3月19日
  • convertquota命令 – 替换旧的磁盘额数据文件

    convertquota命令用于将老的磁盘额数据文件(“quota.user”和“quota.group”)转换为新格式的文件(“quota.user”和“quota.group”…

    Linux命令 2021年3月19日
  • Category: 6:网络通讯

    talk命令允许同一主机或不同主机上的两个用户进行交互式对话。talk命令在每个用户的显示器上打开发送窗口和接 […]

    Linux命令 2021年3月19日
  • esxcli命令 – 查询虚拟机信息

    esxcli命令用途广泛,我们不能简单地将其归为单个命令。esxcli包括许多不同的命名空间,允许你控制ESXi提供的几乎所有设备。 语法格式:esxcli [命名空间] [参数]…

    Linux命令 2021年3月18日
  • partprobe命令 – 重读分区表

    partprobe命令用于重读分区表,将磁盘分区表变化信息通知内核,请求操作系统重新加载分区表。如果删除文件后,仍然提示占用空间,可以用partprobe在不重启的情况下重读分区 …

    Linux命令 2021年3月19日
  • blockdev命令 – 调用区块设备控制程序

    实用程序blockdev允许从命令行调用block设备ioctl, 以实现对设备的控制 。 语法格式:blockdev [参数] [设备] 常用参数: -q 安静模式 -v 详细信…

    Linux命令 2021年3月18日
  • mail命令 – 发送和接收邮件

    mail命令是命令行的电子邮件发送和接收的工具。mail命令是个软链接,真实的程序文件是mailx。 语法格式:mail [参数] 常用参数: -s 给邮件追加主题 -a 发送邮件…

    Linux命令 2021年3月19日