AIOps 一场颠覆传统运维的盛筵
917
2022-11-09
Linux基础 | iostat系统负载命令学习
iostat 用于输出CPU和磁盘I/O相关的统计信息。
1、安装
2、语法
3、使用
4、使用举例
5、更详细的io统计信息
5、pcie io检查
yum install sysstat -y
iostat [ 选项 ] [ <时间间隔> [ <次数> ] ]
选项:
-c:仅显示CPU使用情况
-d:仅显示指定设备利用率,如果没指定默认输出全部设备信息
-k:显示状态以KB字节每秒为单位,而不使用块每秒
-m:显示状态以MB字节每秒为单位
-p:仅显示块设备和所有被使用的其他分区的状态
-t:显示每个报告产生时的时间
-V:显示版号并退出
-x:显示扩展状态,磁盘IO信息等。
参数:
间隔时间:每次采集间隔多少秒。
次数:总共采集次数。
[root@es02 ~]# iostat
Linux 3.10.0-862.el7.x86_64 (es02) 05/27/2022 _x86_64_ (1 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.18 0.00 0.16 0.05 0.00 99.61
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 0.28 5.70 6.09 1199561 1281828
sdb 0.01 0.28 295.62 59933 62245225
以上输出中,包含三部分:
avg-cpu每列的含义:
选项 | 说明 |
---|---|
%user | 应用程序使用CPU的时间占比 |
%nice | 拥有高优先级的应用程序使用CPU的时间占比 |
%system | 内核程序使用CPU的时间占比 |
%iowait | 表示等待进行 I/O 所使用 CPU 的时间百分比 |
%steal | 显示虚拟机管理器在服务另一个虚拟处理器时虚拟CPU处在非自愿等待下花费时间的百分比 |
%idle | 显示 CPU 的空闲时间 |
负载情况判断:
Device 中各列参数含义如下:
选项 | 说明 |
---|---|
Device | 设备名称 |
tps | 该设备每秒的传输次数,"一次传输"意思是"一次I/O请求。 |
kB_read/s | 每秒从设备读取的数据量。 |
kB_wrtn/s | 每秒向设备写入的数据量。 |
kB_read | 读取的总数据量。 |
kB_wrtn | 写入的总数量数据量。 |
iostat -c 1 10 # 仅查看cpu状态
iostat -d sda 2 # 只采集sda硬盘、默认是采集所有硬盘
iostat -d 2 3 # 两秒2采集一次,共采集三次
iostat -d -k 1 10 # 查看TPS和吞吐量信息,显示单位KB
iostat -d -m 2 # 查看TPS和吞吐量信息,显示单位MB
iostat -d -x -k 1 10 # 查看设备使用率(%util)、响应时间(await)
使用 -x 选项,显示更详细的io设备统计信息,用来分析io瓶颈。
实例分析
[root@es02 ~]# iostat -d sdb -x -k 1 1|column
Linux 3.10.0-862.el7.x86_64 (es02) 05/27/2022 _x86_64_ (1 CPU)
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sdb 0.00 0.00 1.00 90.00 0.28 294.60 55333.18 0.79 3.36 2.36 8.11 2.87 0.00
对于以上示例输出,我们可以获取到以下信息:
以上各列的含义如下:
选项 | 说明 |
---|---|
rrqm/s | 每秒对该设备的读请求被合并(Merge)次数,文件系统会对读取同块(block)的请求进行合并。 |
wrqm/s | 每秒对该设备的写请求被合并(Merge)次数。 |
rsec/s | 每秒读取的扇区数。 |
wsec/s | 每秒写入的扇区数。 |
rkB/s | 每秒读数据量(kB为单位)。 |
wkB/s | 每秒写数据量(kB为单位)。 |
avgrq-sz | 平均每次IO操作的数据量(扇区数为单位)。 |
avgqu-sz | 平均等待处理的IO请求队列长度,队列长度越短越好。 |
await | 平均每次IO请求等待时间(包括等待时间和处理时间,毫秒为单位), 这里可以理解为IO的响应时间,一般地系统IO响应时间应该低于5ms,如果大于10ms就比较大了。 这个时间包括了队列时间和服务时间,也就是说,一般情况下,await大于svctm,它们的差值越小,则说明队列时间越短,反之差值越大,队列时间越长,说明系统出了问题。 |
svctm | 平均每次IO请求的处理时间(毫秒为单位) 如果svctm的值与await很接近,表示几乎没有I/O等待,磁盘性能很好。 如果svctm的值远小于await的值,则表示I/O队列等待太长,系统上运行的应用程序将变慢。 |
%util | 采集周期内用于IO操作的时间比率,即IO队列非空的时间比率。 例如,如果统计间隔1秒,该设备有0.8秒在处理IO,而0.2秒闲置,那么该设备的%util = 0.8/1 = 80%,所以该参数暗示了设备的繁忙程度。 一般地,如果该参数是100%表示设备已经接近满负荷运行了。 |
以上只是针对普通SAS盘,如果是SSD盘统计信息可能不准,可以参考如下文档。
https://itpeernetwork.intel.com/iostat-and-nvme-block-drivers-for-intel-pcie-ssd-what-you-need-to-know/
https://brooker.co.za/blog/2014/07/04/iostat-pct.html
END
发表评论
暂时没有评论,来抢沙发吧~