Linux基础 | iostat系统负载命令学习

网友投稿 917 2022-11-09

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。

Linux基础 | iostat系统负载命令学习

iostat 用于输出CPU和磁盘I/O相关的统计信息。

  • 1、安装

  • 2、语法

  • 3、使用

  • 4、使用举例

  • 5、更详细的io统计信息

  • 5、pcie io检查

1、安装

yum install sysstat -y

2、语法

iostat [ 选项 ] [ <时间间隔> [ <次数> ] ]

选项:

-c:仅显示CPU使用情况
-d:仅显示指定设备利用率,如果没指定默认输出全部设备信息
-k:显示状态以KB字节每秒为单位,而不使用块每秒
-m:显示状态以MB字节每秒为单位
-p:仅显示块设备和所有被使用的其他分区的状态
-t:显示每个报告产生时的时间
-V:显示版号并退出
-x:显示扩展状态,磁盘IO信息等。

参数:

间隔时间:每次采集间隔多少秒。
次数:总共采集次数。

3、使用

[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

以上输出中,包含三部分:

  • 1、系统版本、日期、CPU核心数。
  • 2、总体cpu使用情况统计信息,对于多核cpu,这里为所有cpu的平均值。
  • 3、各磁盘设备的IO统计信息。

avg-cpu每列的含义:

选项说明
%user应用程序使用CPU的时间占比
%nice拥有高优先级的应用程序使用CPU的时间占比
%system内核程序使用CPU的时间占比
%iowait表示等待进行 I/O 所使用 CPU 的时间百分比
%steal显示虚拟机管理器在服务另一个虚拟处理器时虚拟CPU处在非自愿等待下花费时间的百分比
%idle显示 CPU 的空闲时间

负载情况判断:

  • 若 %iowait 的值过高,表示硬盘存在I/O瓶颈。
  • 若 %idle 的值高但系统响应慢时,有可能是CPU等待分配内存,此时应加大内存容量。
  • 若 %idle 的值持续低于1,则系统的CPU处理能力相对较低,表明系统中最需要解决的资源是CPU。

Device 中各列参数含义如下:

选项说明
Device设备名称
tps该设备每秒的传输次数,"一次传输"意思是"一次I/O请求。
kB_read/s每秒从设备读取的数据量。
kB_wrtn/s每秒向设备写入的数据量。
kB_read读取的总数据量。
kB_wrtn写入的总数量数据量。

4、使用举例

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) 

5、更详细的io统计信息

使用 -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

对于以上示例输出,我们可以获取到以下信息:

  • 每秒向磁盘上写294.60kb左右数据(wkB/s值)
  • 每秒有91次IO操作(r/s+w/s),其中以写操作为主体。
  • 平均每次IO请求等待时间为3.36毫秒,处理时间为2.87毫秒。
  • 等待处理的IO请求队列中,平均有 0.79个请求驻留。

以上各列的含义如下:

选项说明
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%表示设备已经接近满负荷运行了。

5、pcie io检查

以上只是针对普通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

上一篇:在uos专业版操作系统上安装VMware workstation pro
下一篇:安装统信服务器操作系统1020e
相关文章

 发表评论

暂时没有评论,来抢沙发吧~