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

相关推荐

  • apachectl命令 – Apache服务器前端控制工具

    apachectl命令是Apache的Web服务器前端控制工具,用以启动、关闭和重新启动Web服务器进程。 语法格式: apachectl [参数] 常用参数: configtes…

    Linux命令 2021年3月19日
  • vgcreate命令 – 创建卷组

    vgcreate命令用于创建LVM卷组。卷组(Volume Group)将多个物理卷组织成一个整体,屏蔽了底层物理卷细节。在卷组上创建逻辑卷时不用考虑具体的物理卷信息。 语法格式:…

    Linux命令 2021年3月19日
  • xz命令 – POSIX 平台开发工具

    XZ Utils 是为 POSIX 平台开发具有高压缩率的工具。它使用 LZMA2 压缩算法,生成的压缩文件比 POSIX 平台传统使用的 gzip、bzip2 生成的压缩文件更小…

    Linux命令 2021年3月18日
  • lsscsi命令 – 列出SCSI设备及属性

    lsscsi命令的作用是列出SCSI设备(或主机)及它们的属性。 lsscsi不是内置命令。需要安装lsscsi相应的包,安装完之后lsscsi命令就可以使用了。lsscsi命令能…

    Linux命令 2021年3月18日
  • ipvsadm命令 – linux 虚拟服务器管理

    ipvsadm命令用于在Linux内核中设置,维护或检查虚拟服务器表。 Linux虚拟服务器可用于基于两个或更多节点的集群构建可伸缩网络服务。 群集的主节点将服务请求重定向到将实际…

    Linux命令 2021年3月19日
  • ifstat命令 – 统计网络信息

    ifstat命令就像iostat/vmstat描述其它的系统状况一样,是一个统计网络接口活动状态的工具。ifstat工具系统中并不默认安装,需要自己下载源码包,重新编译安装,使用过…

    Linux命令 2021年3月19日
  • lndir命令 – 连接目录内容

    lndir命令的全称为“ link directory ”,该命令用于连接目录内容。 执行lndir命令可以把源目录底下的文件和子目录统统建立起相互对应的符号连接。lndir命令用…

    Linux命令 2021年3月19日
  • stratis命令 – 管理linux存储

    stratis 是一个具有与 ZFS 和 Btrfs 相似功能的卷管理文件系统。同时又是一个易于使用的 Linux 存储工具。 语法格式:stratis [参数] 常用参数: fs…

    Linux命令 2021年3月18日
  • dhcpd命令 – 运行DHCP服务器

    dhcpd命令的作用是可以运行DHCP服务器。 在启动dhcpd命令时它会读取dhcpd.conf文件,并将每个子网上的可用地址存储在内存中。当客户端使用DHCP协议请求地址时,d…

    Linux命令 2021年3月19日
  • mkfs命令 – 在特定分区上建立文件系统

    在磁盘分区上创建ext2、ext3、ext4、ms-dos、vfat文件系统,默认情况下会创建ext2。mkfs用于在设备上构建Linux文件系统,通常是硬盘分区。文件要么是设备名…

    Linux命令 2021年3月19日