【Linux系列-2】iostat命令详解

112 阅读6分钟

1 iostat简介

=====================================================================

iostat命令是Linux系统上查看I/O性能最基本的工具,其全称为 I/O statistics。iostat能统计磁盘活动情况,也能统计CPU使用情况。

iostat属于sysstat软件包,可以通过命令进行安装:


yum install sysstat



iostat数据的来源是Linux操作系统的/proc/diskstats:


# cat /proc/diskstats

   8       0 sda 239219 1806 37281259 2513275 904326 88832 50268824 26816609 0 4753060 29329105

   8       1 sda1 338 0 53241 6959 154 0 5496 3724 0 6337 10683

   8       2 sda2 238695 1797 37226458 2504489 620322 88832 50263328 25266599 0 3297988 27770221

   8      16 sdb 1009117 481 1011773 127319 0 0 0 0 0 126604 126604

   8      17 sdb1 1008792 480 1010929 127078 0 0 0 0 0 126363 126363

 253       0 dm-0 1005 0 8040 15137 30146 0 241168 2490230 0 30911 2505369

 253       1 dm-1 192791 0 35500457 2376087 359162 0 44095600 22949466 0 2312433 25325563

 253       2 dm-2 47132 0 1717329 183565 496207 0 5926560 7348763 0 2517753 7532688



注意,procfs中的前三个字段:主设备号、从设备号、设备名。

从第四个字段开始,介绍的是该设备的相关统计:

  1. rd_ios:读操作的次数

  2. rd_merges:合并读操作的次数。如果两个读操作读取相邻的数据块,那么可以被合并成1个。

  3. rd_sectors:读取的扇区数量

  4. rd_ticks:读操作消耗的时间(以毫秒为单位)。每个读操作从__make_request()开始计时,到end_that_request_last()为止,包括了在队列中等待的时间。

  5. wr_ios:写操作的次数

  6. wr_merges:合并写操作的次数

  7. wr_sectors:写入的扇区数量

  8. wr_ticks:写操作消耗的时间(以毫秒为单位)

  9. in_flight:当前未完成的I/O数量。在I/O请求进入队列时该值加1,在I/O结束时该值减1。 注意:是I/O请求进入队列时,而不是提交给硬盘设备时。

  10. io_ticks:该设备用于处理I/O的自然时间(wall-clock time)

  11. time_in_queue:对字段#10(io_ticks)的加权值

iostat有以下缺陷:

  1. iostat的输出结果大多数是一段时间内的平均值,因此难以反映峰值情况

  2. iostat仅能对系统整体情况进行分析汇报,却不能针对某个进程进行深入分析。

  3. iostat未单独统计IO处理信息,而是将IO处理时间和IO等待时间合并统计,因此包括await在内的指标并不能非常准确地衡量磁盘性能表现。

2 命令与参数项

===================================================================

2.1 命令格式



iostat[参数][时间][次数]



例如,iostat -d -x -k 1 3:每1s采集一次数据,显示3次,以kb为单位显示磁盘使用情况详细信息。

2.2 参数详解


  1. -x 显示详细信息

  2. -C 显示CPU使用情况,与-d选项互斥

  3. -d 显示磁盘使用情况,与-C选项互斥

  4. -k 以 KB 为单位显示

  5. -m 以 M 为单位显示

  6. -N 显示磁盘阵列(LVM) 信息

  7. -n 显示NFS 使用情况

  8. -p[磁盘] 显示磁盘和分区的情况

  9. -t 显示终端和CPU的信息

  10. -V 显示版本信息

3 输出项目说明

===================================================================

使用iostat后,结果面板如下:


avg-cpu:  %user   %nice %system %iowait  %steal   %idle

           1.44    0.00    0.39    0.00    0.00   98.17



Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn

sda               0.37         0.47        30.30    3561197  229837730

dm-0              0.44         0.33        29.97    2518272  227313194

dm-1              0.12         0.13         0.33    1013276    2520308

dm-2              0.00         0.00         0.00        502       2068



3.1 cpu属性


iostat结果面板 avg-cpu 描述的是系统cpu使用情况:

  • %user:CPU处在用户模式下的时间百分比。

  • %nice:CPU处在带NICE值的用户模式下的时间百分比。

  • %system:CPU处在系统模式下的时间百分比。

  • %iowait:CPU等待输入输出完成时间的百分比。

  • %steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比。

  • %idle:CPU空闲时间百分比。

3.2 磁盘属性


iostat结果面板 Device 项描述的是系统磁盘使用情况:

  • tps:该设备每秒的传输次数(Indicate the number of transfers per second that were issued to the device.)。“一次传输”意思是“一次I/O请求”。多个逻辑请求可能会被合并为“一次I/O请求”。“一次传输”请求的大小是未知的。

  • kB_read/s:每秒从设备(drive expressed)读取的数据量;

  • kB_wrtn/s:每秒向设备(drive expressed)写入的数据量;

  • kB_read:读取的总数据量;

  • kB_wrtn:写入的总数量数据量;

4 使用实例

=================================================================

4.1 查看磁盘详情


命令:


iostat -d -x -k 1 1



输出结果:


Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util

sda               0.03     0.16    0.01    0.36     0.47    30.30   165.95     0.02   55.32    9.22   56.77  13.56   0.50

dm-0              0.00     0.00    0.01    0.44     0.33    29.97   136.71     0.02   54.07   12.12   54.68  11.28   0.50

dm-1              0.00     0.00    0.03    0.08     0.13     0.33     8.00     0.12 1015.22    5.91 1420.78   0.41   0.00

dm-2              0.00     0.00    0.00    0.00     0.00     0.00    48.96     0.00    1.27    0.37    9.80   1.27   0.00


**深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**

![img](https://p3-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/32ca756082c94cdfbfd62d2136e87499~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3MDgwNDUxMTkwMTI=:q75.awebp?rk3s=f64ab15b&x-expires=1771511584&x-signature=56Av0QgsV4SuOnNHeVR%2B%2B0nUy%2FU%3D)
![img](https://p3-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/9da26de6c6484cf790b409b068580ff8~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3MDgwNDUxMTkwMTI=:q75.awebp?rk3s=f64ab15b&x-expires=1771511584&x-signature=%2B4dipfJ2q6U4O4OQjWYYMsgeUVA%3D)

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
详情docs.qq.com/doc/DSmdCdUNwcEJDTXFK