2024年Linux最全【Linux系列-2】iostat命令详解

  • 2 命令与参数项

    • 2.1 命令格式

    • 2.2 参数详解

  • 3 输出项目说明

    • 3.1 cpu属性

    • 3.2 磁盘属性

  • 4 使用实例

    • 4.1 查看磁盘详情

    • 4.2 其他

  • 5 深入解析

    • 5.1 avgqu-sz

    • 5.2 await

    • 5.3 %util

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



为了做好运维面试路上的助攻手,特整理了上百道 【运维技术栈面试题集锦】 ,让你面试不慌心不跳,高薪offer怀里抱!

这次整理的面试题,小到shell、MySQL,大到K8s等云原生技术栈,不仅适合运维新人入行面试需要,还适用于想提升进阶跳槽加薪的运维朋友。

本份面试集锦涵盖了

  • 174 道运维工程师面试题
  • 128道k8s面试题
  • 108道shell脚本面试题
  • 200道Linux面试题
  • 51道docker面试题
  • 35道Jenkis面试题
  • 78道MongoDB面试题
  • 17道ansible面试题
  • 60道dubbo面试题
  • 53道kafka面试
  • 18道mysql面试题
  • 40道nginx面试题
  • 77道redis面试题
  • 28道zookeeper

总计 1000+ 道面试题, 内容 又全含金量又高

  • 174道运维工程师面试题

1、什么是运维?

2、在工作中,运维人员经常需要跟运营人员打交道,请问运营人员是做什么工作的?

3、现在给你三百台服务器,你怎么对他们进行管理?

4、简述raid0 raid1raid5二种工作模式的工作原理及特点

5、LVS、Nginx、HAproxy有什么区别?工作中你怎么选择?

6、Squid、Varinsh和Nginx有什么区别,工作中你怎么选择?

7、Tomcat和Resin有什么区别,工作中你怎么选择?

8、什么是中间件?什么是jdk?

9、讲述一下Tomcat8005、8009、8080三个端口的含义?

10、什么叫CDN?

11、什么叫网站灰度发布?

12、简述DNS进行域名解析的过程?

13、RabbitMQ是什么东西?

14、讲一下Keepalived的工作原理?

15、讲述一下LVS三种模式的工作过程?

16、mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?

17、如何重置mysql root密码?

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
么东西?

14、讲一下Keepalived的工作原理?

15、讲述一下LVS三种模式的工作过程?

16、mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?

17、如何重置mysql root密码?

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 12
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值