iostat是一个Linux系统性能分析工具,用于监测CPU、磁盘、网络等系统资源的使用情况。iostat能够显示多个时间段内设备的平均负载,并给出CPU、文本设备、USB和网络文件系统对系统性能的影响评估,主要用于分析系统性能瓶颈。
基本格式
iostat的基本格式如下:
iostat [选项] [时间间隔] [次数]
其中,选项如下:
- -c:仅显示CPU使用情况;
- -d:仅显示磁盘使用情况;
- -h:以人类可读的格式显示输出;
- -k:使用KByte/s作为单位输出;
- -N:仅提供网络文件系统的磁盘统计;
- -n:在结果中包含NFS的统计信息;
- -p:仅提供由指定的块设备驱动器使用的设备的统计信息;
- -t:在输出中打印时间戳。
时间间隔和次数分别指定了观测时间间隔和观测次数。iostat的输出格式如下:
Linux 2.6.32-642.el6.x86_64 (node01) 2020年02月26日 _x86_64_ (1 CPU)
Device: r/s w/s rMB/s wMB/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.25 29.42 0.00 0.87 3.20 1227.65 85.04 0.02 0.57 1.19 0.55 0.04
sdb 25.68 0.57 1.26 0.00 12951.26 2.86 986.07 0.26 9.89 9.27 128.96 331.44
其中,Device列是设备名称,r/s和w/s是每秒读写速率,rMB/s和wMB/s是每秒读写数据量(MB/s),rkB/s和wkB/s是每秒读写块数(KB/s),avgrq-sz是平均请求大小,avgqu-sz是平均未处理请求队列长度,await是平均I/O请求等待时间(毫秒),r_await是平均读请求等待时间(毫秒),w_await是平均写请求等待时间(毫秒),svctm是平均I/O请求服务时间(毫秒),%util是设备的繁忙度。
示例
示例1: 显示CPU使用情况
执行以下命令,以1s的时间间隔连续观察CPU的平均利用率2次:
iostat -c 1 2
输出如下:
Linux 2.6.32-642.el6.x86_64 (node01) 2020年02月26日 _x86_64_ (1 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.23 0.00 0.10 0.00 0.00 99.67
avg-cpu: %user %nice %system %iowait %steal %idle
0.23 0.00 0.09 0.00 0.00 99.68
可以看到,%user表示用户空间程序所占用CPU的百分比,%nice表示优先级较低的任务占用CPU的百分比,%system表示内核空间程序所占用CPU的百分比,%iowait表示等待硬盘I/O操作完成的进程所占用CPU的百分比,%steal表示被虚拟化程序抢占导致的虚拟化CPU时间占用比例,%idle表示空闲CPU占用百分比。
示例2: 显示磁盘使用情况
执行以下命令,以1s的时间间隔观察所有设备的磁盘I/O情况2次:
iostat -d 1 2
输出如下:
Linux 2.6.32-642.el6.x86_64 (node01) 2020年02月26日 _x86_64_ (1 CPU)
Device: r/s w/s rMB/s wMB/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.25 29.42 0.00 0.87 3.20 1227.65 85.04 0.02 0.57 1.19 0.55 0.04
sdb 25.68 0.57 1.26 0.00 12951.26 2.86 986.07 0.26 9.89 9.27 128.96 331.44
可以看到,除了前面的设备名称外,还包括每个设备的磁盘读写速率、数据量、块数、平均请求大小、未处理请求队列长度、请求等待时间、请求服务时间以及设备的繁忙度。该命令可以帮助我们分析磁盘I/O引起的性能问题。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Linux iostat命令:显示磁盘和输入/输出操作的统计信息 - Python技术站