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

相关推荐

  • setleds命令 – 设定键盘上方三个 LED 的状态

    setleds即是英文词组“set leds”的合并,翻译为中文就是设置LED灯。setleds命令用来设定键盘上方三个 LED 灯的状态。在 Linux 中,每一个虚拟主控台都有…

    Linux命令 2021年3月18日
  • losetup命令 – 设置循环设备

    losetup命令用来设置循环设备,查看回环设备的状态。循环设备可把文件虚拟成区块设备,籍以模拟整个文件系统,让用户得以将其视为硬盘驱动器,光驱或软驱等设备,并挂入当作目录来使用。…

    Linux命令 2021年3月19日
  • iptstate命令 – 以top风格显示内核的iptables状态

    iptstate命令以top命令类似的风格实时显示Linux内核中iptables的工作状态。输出信息可以以任何字段进行排序,可以定义状态刷新的频率和单次显示状态信息。 语法格式:…

    Linux命令 2021年3月19日
  • sync命令 – 刷新文件系统缓冲区

    sync命令用于强制被改变的内容立刻写入磁盘,更新信息速度非常快, 在Linux/Unix系统中,在文件或数据处理过程中一般先放到内存缓冲区中,等到适当的时候再写入磁盘,以提高系统…

    Linux命令 2021年3月19日
  • quotacheck命令 – 扫描获取磁盘信息

    quotacheck命令通过扫描指定的文件系统,获取磁盘的使用情况,创建、检查和修复磁盘配额(quota)文件。 语法格式: quotacheck [参数] 常用参数: -a 扫…

    Linux命令 2021年3月19日
  • tracepath命令 – 追踪报文的路由信息

    tracepath命令用来追踪并显示报文到达目的主机所经过的路由信息,能够发现路由中的MTU值。tracepath使用套接字API来实现其所有功能,不需要root权限。 语法格式:…

    Linux命令 2021年3月19日
  • aulast命令 – 打印上次登录用户列表

    aulast是一个程序,它打印出上次登录用户列表,类似于last和lastb命令。aulast 搜索审核日志或给定的审核日志文件,并显示根据审核日志中的时间范围登录(和注销)的所有…

    Linux命令 2021年3月18日
  • ppp-off命令 – 关闭ppp连线

    ppp-off命令是Slackware发行版内附的程序,让用户切断PPP的网络连线。 语法格式:ppp-off [参数] 参考实例 关闭ppp连线: [root@xtuos.com…

    Linux命令 2021年3月18日
  • ssh-keyscan命令 – 收集主机的ssh公钥

    ssh-keyscan命令是一个收集大量主机公钥的实用工具。它的目的是创建和验证“ssh_known_hosts”文件。 ssh-keyscan命令仅支持ssh协议版本1,在ssh…

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

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

    Linux命令 2021年3月19日