Linux iostat命令

2023-12-17 20:04
文章标签 linux 命令 iostat

本文主要是介绍Linux iostat命令,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 写在前面

本文主要介绍 Linux iostat(I/O statistics) 命令:用于监控系统的磁盘I/O活动情况,包括:磁盘读写速率、I/O等待时间、CPU使用率等信息。

iostat 区别于 iotop: iostat 是系统级别的IO监控;iotop 是进程级别IO监控;

滑翔的纸飞机

追逐技术,打破黑箱,分享技术干货

28篇原创内容

公众号

2. iostat 命令

2.1 安装

  • RedHat / CentOS / Fedora 

yum install sysstat
  • Debian / Ubuntu / Linux Mint 

apt-get install sysstat

2.2 iostat 命令使用

基本示例:

直接使用iostat命令,查看系统的整体情况,显示CPU的负载情况和磁盘的状态信息。

root@dev:~# iostat
-----------------------------------------------------------------------------------
Linux 5.4.0-167-generic (dev)   12/13/23    _x86_64_    (4 CPU)avg-cpu:  %user   %nice %system %iowait  %steal   %idle4.03    0.02    0.73    0.11    0.01   95.11Device             tps    kB_read/s    kB_wrtn/s    kB_dscd/s    kB_read    kB_wrtn    kB_dscd
loop0             0.00         0.00         0.00         0.00        610          0          0
loop1             0.01         0.02         0.00         0.00       2140          0          0
vda               3.80        16.41        77.58         0.00    2004135    9474635          0

帮助信息:

root@dev:~# iostat --help
-----------------------------------------------------------------------------------
Usage: iostat [ options ] [ <interval> [ <count> ] ]
Options are:
[ -c ] [ -d ] [ -h ] [ -k | -m ] [ -N ] [ -s ] [ -t ] [ -V ] [ -x ] [ -y ] [ -z ]
[ -j { ID | LABEL | PATH | UUID | ... } ]
[ --dec={ 0 | 1 | 2 } ] [ --human ] [ -o JSON ]
[ [ -H ] -g <group_name> ] [ -p [ <device> [,...] | ALL ] ]
[ <device> [...] | ALL ]

参数说明:

-c: 仅显示CPU利用率相关信息;
-d: 仅显示磁盘I/O相关信息;
-k: 显示输出的数据单位为KB/s而不是默认的字节/s;
-t: 在输出中显示时间戳(时间戳格式YYYY-MM-DD HH:MM:SS)。
-m:显示状态以兆字节每秒为单位;
-p:仅显示块设备和所有被使用的其他分区的状态;
-V:显示版号并退出;
-x:显示扩展状态;
-N:显示 lvm2 统计信息;
-j:显示持久设备名称统计信息;interval(间隔时间):每次报告的间隔时间(秒);
count(次数):显示报告的次数;

输出说明:

root@dev:~# iostat
-----------------------------------------------------------------------------------
Linux 5.4.0-167-generic (dev)   12/13/23    _x86_64_    (4 CPU)avg-cpu:  %user   %nice %system %iowait  %steal   %idle4.03    0.02    0.73    0.11    0.01   95.11Device             tps    kB_read/s    kB_wrtn/s    kB_dscd/s    kB_read    kB_wrtn    kB_dscd
loop0             0.00         0.00         0.00         0.00        610          0          0
vda               3.80        16.41        77.58         0.00    2004135    9474635          0

分块介绍上述输出:

  • 第一部分:Linux 5.4.0-167-generic (dev) 12/13/23 _x86_64_ (4 CPU)

•   Linux 5.4.0-167-generic :内核版本号;
•   dev:主机名字;
•   12/13/23:日期;
•   _x86_64_:CPU架构;
•   4 CPU:当前系统的CPU的数量;
  • 第二部分: CPU 信息(类似top命令)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle4.03    0.02    0.73    0.11    0.01   95.11
•   %user : 表示用户空间程序执行的CPU时间百分比;
•   %nice : 表示以较高的优先级运行的用户进程的CPU时间百分比;
•   %system : 表示内核空间程序执行的CPU时间百分比;
•   %iowait : 表示CPU等待I/O操作完成的时间百分比;
•   %steal : 表示由于运行虚拟机等原因被其他虚拟机占用的CPU时间百分比;
•   %idle : 表示CPU空闲时间的百分比;
  • 第三部分: 设备利用率

•   Device : /dev目录中列出的设备/分区名称;
•   tps : 每秒向设备发出的传输次数。tps 越高,表示处理器越忙;
•   Blk_read/s : 显示每秒从设备读取的数据量,以块数(千字节、兆字节)表示;
•   Blk_wrtn/s : 写入设备的数据量,以每秒块数(千字节、兆字节)表示;
•   Blk_read : 显示读取的数据块总数;
•   Blk_wrtn : 显示写入的区块总数;

iostat 使用以下系统文件作为信息输出依据:

•   /proc/stat :包含系统统计信息;
•   /proc/uptime :包含系统正常运行时间;
•   /proc/diskstats 包含磁盘统计信息;
•   /sys 包含块设备的统计数据;
•   /proc/self/mountstats 包含网络文件系统的统计数据;
•   /dev/disk 包含持久设备名称;
2.2.1 命令示例
(1). 使用 -x 输出磁盘I/O的详细情况

显示所有设备的详细的 I/O 统计信息

root@dev:~# iostat -x
-----------------------------------------------------------------------------------
Linux 5.4.0-167-generic (dev)   12/15/23    _x86_64_    (4 CPU)avg-cpu:  %user   %nice %system %iowait  %steal   %idle3.65    0.01    0.69    0.08    0.01   95.56Device            r/s     rkB/s   rrqm/s  %rrqm r_await rareq-sz     w/s     wkB/s   wrqm/s  %wrqm w_await wareq-sz     d/s     dkB/s   drqm/s  %drqm d_await dareq-sz  aqu-sz  %util
loop0            0.00      0.00     0.00   0.00    8.49    11.51    0.00      0.00     0.00   0.00    0.00     0.00    0.00      0.00     0.00   0.00    0.00     0.00    0.00   0.00
loop1            0.01      0.01     0.00   0.00   18.89     1.35    0.00      0.00     0.00   0.00    0.00     0.00    0.00      0.00     0.00   0.00    0.00     0.00    0.00   0.00
vda              0.59     11.03     0.19  23.99    5.99    18.68    3.14     76.49     4.44  58.54    1.86    24.33    0.00      0.00     0.00   0.00    0.00     0.00    0.01   0.50
•   Device:监测设备名称;
•   rrqm/s:每秒需要读取需求的数量;
•   wrqm/s:每秒需要写入需求的数量;
•   r/s:每秒实际读取需求的数量;
•   w/s:每秒实际写入需求的数量;
•   rsec/s:每秒读取区段的数量;
•   wsec/s:每秒写入区段的数量;
•   rkB/s:每秒实际读取的大小,单位为KB;
•   wkB/s:每秒实际写入的大小,单位为KB;
•   avgrq-sz:需求的平均大小区段;
•   avgqu-sz:需求的平均队列长度;
•   await:等待I/O平均的时间(milliseconds);
•   svctm:I/O需求完成的平均时间;
•   %util:被I/O需求消耗的CPU百分比;

查看某块磁盘I/O的详细情况

root@dev:~# iostat -x  /vda
-----------------------------------------------------------------------------------
Linux 5.4.0-167-generic (dev)   12/15/23    _x86_64_    (4 CPU)avg-cpu:  %user   %nice %system %iowait  %steal   %idle3.66    0.01    0.69    0.08    0.01   95.56Device            r/s     rkB/s   rrqm/s  %rrqm r_await rareq-sz     w/s     wkB/s   wrqm/s  %wrqm w_await wareq-sz     d/s     dkB/s   drqm/s  %drqm d_await dareq-sz  aqu-sz  %util

统计信息、详细信息并排显示

root@dev:~# iostat -xd
-----------------------------------------------------------------------------------
Linux 5.4.0-167-generic (dev)   12/15/23    _x86_64_    (4 CPU)Device            r/s     rkB/s   rrqm/s  %rrqm r_await rareq-sz     w/s     wkB/s   wrqm/s  %wrqm w_await wareq-sz     d/s     dkB/s   drqm/s  %drqm d_await dareq-sz  aqu-sz  %util
loop0            0.00      0.00     0.00   0.00    8.49    11.51    0.00      0.00     0.00   0.00    0.00     0.00    0.00      0.00     0.00   0.00    0.00     0.00    0.00   0.00
loop1            0.01      0.01     0.00   0.00   18.89     1.35    0.00      
vda              0.59     10.97     0.19  23.96    5.98    18.65    3.14     76.44     4.44  58.56    1.85    24.34    0.00      0.00     0.00   0.00    0.00     0.00    0.01   0.50
(2). 查看 cpu 状态信息

显示 CPU 统计信息: 使用 -c 选项可以显示 CPU 的统计信息。

root@dev:~# iostat -c
-----------------------------------------------------------------------------------
Linux 5.4.0-167-generic (dev)   12/15/23    _x86_64_    (4 CPU)avg-cpu:  %user   %nice %system %iowait  %steal   %idle3.66    0.01    0.69    0.08    0.02   95.55

间隔 5s 输出 3 次:

root@dev:~# iostat -c 5 3
-----------------------------------------------------------------------------------
Linux 5.4.0-167-generic (dev)   12/15/23    _x86_64_    (4 CPU)avg-cpu:  %user   %nice %system %iowait  %steal   %idle3.66    0.01    0.69    0.08    0.02   95.55avg-cpu:  %user   %nice %system %iowait  %steal   %idle4.12    0.00    0.50    0.00    0.00   95.37avg-cpu:  %user   %nice %system %iowait  %steal   %idle4.06    0.00    0.80    0.00    0.05   95.09
(3). 只查看磁盘状态

只查看磁盘的状态信息: 展示磁盘的读写速率、I/O 等待时间、CPU 使用率等信息。

root@dev:~# iostat -d
-----------------------------------------------------------------------------------
Linux 5.4.0-167-generic (dev)   12/15/23    _x86_64_    (4 CPU)Device             tps    kB_read/s    kB_wrtn/s    kB_dscd/s    kB_read    kB_wrtn    kB_dscd
loop0             0.00         0.00         0.00         0.00        610          0          0
loop1             0.01         0.01         0.00         0.00       2140          0          0
vda               3.73        10.98        76.46         0.00    2313111   16105867          0

实时监控: 每隔 3s 就显示磁盘信息。

root@dev:~# iostat -d 3
-----------------------------------------------------------------------------------
Linux 5.4.0-167-generic (dev)   12/15/23    _x86_64_    (4 CPU)Device             tps    kB_read/s    kB_wrtn/s    kB_dscd/s    kB_read    kB_wrtn    kB_dscd
loop0             0.00         0.00         0.00         0.00        610          0          0
loop1             0.01         0.01         0.00         0.00       2140          0          0
vda               3.73        10.98        76.44         0.00    2313155   16109667          0Device             tps    kB_read/s    kB_wrtn/s    kB_dscd/s    kB_read    kB_wrtn    kB_dscd
loop0             0.00         0.00         0.00         0.00          0          0          0
loop1             0.00         0.00         0.00         0.00          0          0          0
vda               1.00         0.00         8.00         0.00          0         24          0
(4). 以k或M为单位显示信息

以k或M为单位显示信息:iostat -k / iostat -m

root@dev:~# iostat -k
-----------------------------------------------------------------------------------
Linux 5.4.0-167-generic (dev)   12/15/23    _x86_64_    (4 CPU)avg-cpu:  %user   %nice %system %iowait  %steal   %idle3.66    0.01    0.69    0.08    0.02   95.55Device             tps    kB_read/s    kB_wrtn/s    kB_dscd/s    kB_read    kB_wrtn    kB_dscd
loop0             0.00         0.00         0.00         0.00        610          0          0
loop1             0.01         0.01         0.00         0.00       2140          0          0
vda               3.73        10.96        76.44         0.00    2313523   16141879          0
(5) 显示块设备的统计信息

显示系统正在使用的块设备及其所有分区的统计数据。如果在命令行中输入设备名称,则会显示该设备及其所有分区的统计数据。

root@dev:~# iostat -p
-----------------------------------------------------------------------------------
Linux 5.4.0-167-generic (dev)   12/15/23    _x86_64_    (4 CPU)avg-cpu:  %user   %nice %system %iowait  %steal   %idle3.66    0.01    0.69    0.08    0.02   95.55Device             tps    kB_read/s    kB_wrtn/s    kB_dscd/s    kB_read    kB_wrtn    kB_dscd
loop0             0.00         0.00         0.00         0.00        610          0          0
loop1             0.01         0.01         0.00         0.00       2140          0          0
vda               3.73        10.94        76.41         0.00    2313699   16156263          0
vda1              3.46        10.83        76.41         0.00    2289728   16156258          0
vda14             0.00         0.02         0.00         0.00       3893          0          0
vda15             0.01         0.07         0.00         0.00      13914          5          0

2.3 总结

磁盘分析

在使用 iostat 进行系统性能监控时,需要注意综合分析磁盘和 CPU 等多个性能指标,以全面评估系统性能瓶颈的位置和原因。

通过监控以上指标,可以识别磁盘的瓶颈位置,例如:
• 如果 r/s 和 w/s 较高,说明磁盘 IO 压力较大,需要考虑更换更高性能的硬盘;
• 如果 await 和 svctm 较高,说明磁盘处理 I/O 请求的能力不足,可能需要更换磁盘控制器或升级磁盘阵列等。

CPU分析

通过监控以上指标,可以识别CPU的瓶颈位置,例如:
• 如果 %user 和 %system 较高,说明CPU的负载较大,可能需要考虑升级CPU或增加CPU核心数;
• 如果 %iowait 较高,说明CPU等待IO完成的时间较长,可能需要优化磁盘性能或者减少磁盘IO操作;
• 如果 %idle 值高,表示 CPU 较空闲,系统处于空闲状态,无太多处理任务;
• 如果 %idle 值高但系统响应慢时,有可能是 CPU 等待分配内存,此时应加大内存容量。
• 如果 %idle 较低,说明 CPU 负载较大,可能需要考虑优化应用程序或增加 CPU 资源等。

这篇关于Linux iostat命令的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/505674

相关文章

Linux磁盘分区、格式化和挂载方式

《Linux磁盘分区、格式化和挂载方式》本文详细介绍了Linux系统中磁盘分区、格式化和挂载的基本操作步骤和命令,包括MBR和GPT分区表的区别、fdisk和gdisk命令的使用、常见的文件系统格式以... 目录一、磁盘分区表分类二、fdisk命令创建分区1、交互式的命令2、分区主分区3、创建扩展分区,然后

Linux中chmod权限设置方式

《Linux中chmod权限设置方式》本文介绍了Linux系统中文件和目录权限的设置方法,包括chmod、chown和chgrp命令的使用,以及权限模式和符号模式的详细说明,通过这些命令,用户可以灵活... 目录设置基本权限命令:chmod1、权限介绍2、chmod命令常见用法和示例3、文件权限详解4、ch

Linux内核之内核裁剪详解

《Linux内核之内核裁剪详解》Linux内核裁剪是通过移除不必要的功能和模块,调整配置参数来优化内核,以满足特定需求,裁剪的方法包括使用配置选项、模块化设计和优化配置参数,图形裁剪工具如makeme... 目录简介一、 裁剪的原因二、裁剪的方法三、图形裁剪工具四、操作说明五、make menuconfig

Linux使用nohup命令在后台运行脚本

《Linux使用nohup命令在后台运行脚本》在Linux或类Unix系统中,后台运行脚本是一项非常实用的技能,尤其适用于需要长时间运行的任务或服务,本文我们来看看如何使用nohup命令在后台... 目录nohup 命令简介基本用法输出重定向& 符号的作用后台进程的特点注意事项实际应用场景长时间运行的任务服

什么是cron? Linux系统下Cron定时任务使用指南

《什么是cron?Linux系统下Cron定时任务使用指南》在日常的Linux系统管理和维护中,定时执行任务是非常常见的需求,你可能需要每天执行备份任务、清理系统日志或运行特定的脚本,而不想每天... 在管理 linux 服务器的过程中,总有一些任务需要我们定期或重复执行。就比如备份任务,通常会选在服务器资

Redis的Hash类型及相关命令小结

《Redis的Hash类型及相关命令小结》edisHash是一种数据结构,用于存储字段和值的映射关系,本文就来介绍一下Redis的Hash类型及相关命令小结,具有一定的参考价值,感兴趣的可以了解一下... 目录HSETHGETHEXISTSHDELHKEYSHVALSHGETALLHMGETHLENHSET

Linux限制ip访问的解决方案

《Linux限制ip访问的解决方案》为了修复安全扫描中发现的漏洞,我们需要对某些服务设置访问限制,具体来说,就是要确保只有指定的内部IP地址能够访问这些服务,所以本文给大家介绍了Linux限制ip访问... 目录背景:解决方案:使用Firewalld防火墙规则验证方法深度了解防火墙逻辑应用场景与扩展背景:

如何使用 Bash 脚本中的time命令来统计命令执行时间(中英双语)

《如何使用Bash脚本中的time命令来统计命令执行时间(中英双语)》本文介绍了如何在Bash脚本中使用`time`命令来测量命令执行时间,包括`real`、`user`和`sys`三个时间指标,... 使用 Bash 脚本中的 time 命令来统计命令执行时间在日常的开发和运维过程中,性能监控和优化是不

Linux下MySQL8.0.26安装教程

《Linux下MySQL8.0.26安装教程》文章详细介绍了如何在Linux系统上安装和配置MySQL,包括下载、解压、安装依赖、启动服务、获取默认密码、设置密码、支持远程登录以及创建表,感兴趣的朋友... 目录1.找到官网下载位置1.访问mysql存档2.下载社区版3.百度网盘中2.linux安装配置1.

PHP执行php.exe -v命令报错的解决方案

《PHP执行php.exe-v命令报错的解决方案》:本文主要介绍PHP执行php.exe-v命令报错的解决方案,文中通过图文讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下... 目录执行phpandroid.exe -v命令报错解决方案执行php.exe -v命令报错-PHP War