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系统上连接GitHub的方法步骤(适用2025年)

《在Linux系统上连接GitHub的方法步骤(适用2025年)》在2025年,使用Linux系统连接GitHub的推荐方式是通过SSH(SecureShell)协议进行身份验证,这种方式不仅安全,还... 目录步骤一:检查并安装 Git步骤二:生成 SSH 密钥步骤三:将 SSH 公钥添加到 github

Linux线程同步/互斥过程详解

《Linux线程同步/互斥过程详解》文章讲解多线程并发访问导致竞态条件,需通过互斥锁、原子操作和条件变量实现线程安全与同步,分析死锁条件及避免方法,并介绍RAII封装技术提升资源管理效率... 目录01. 资源共享问题1.1 多线程并发访问1.2 临界区与临界资源1.3 锁的引入02. 多线程案例2.1 为

Oracle数据库定时备份脚本方式(Linux)

《Oracle数据库定时备份脚本方式(Linux)》文章介绍Oracle数据库自动备份方案,包含主机备份传输与备机解压导入流程,强调需提前全量删除原库数据避免报错,并需配置无密传输、定时任务及验证脚本... 目录说明主机脚本备机上自动导库脚本整个自动备份oracle数据库的过程(建议全程用root用户)总结

Linux如何查看文件权限的命令

《Linux如何查看文件权限的命令》Linux中使用ls-R命令递归查看指定目录及子目录下所有文件和文件夹的权限信息,以列表形式展示权限位、所有者、组等详细内容... 目录linux China编程查看文件权限命令输出结果示例这里是查看tomcat文件夹总结Linux 查看文件权限命令ls -l 文件或文件夹

idea的终端(Terminal)cmd的命令换成linux的命令详解

《idea的终端(Terminal)cmd的命令换成linux的命令详解》本文介绍IDEA配置Git的步骤:安装Git、修改终端设置并重启IDEA,强调顺序,作为个人经验分享,希望提供参考并支持脚本之... 目录一编程、设置前二、前置条件三、android设置四、设置后总结一、php设置前二、前置条件

Linux系统中查询JDK安装目录的几种常用方法

《Linux系统中查询JDK安装目录的几种常用方法》:本文主要介绍Linux系统中查询JDK安装目录的几种常用方法,方法分别是通过update-alternatives、Java命令、环境变量及目... 目录方法 1:通过update-alternatives查询(推荐)方法 2:检查所有已安装的 JDK方

Linux系统之lvcreate命令使用解读

《Linux系统之lvcreate命令使用解读》lvcreate是LVM中创建逻辑卷的核心命令,支持线性、条带化、RAID、镜像、快照、瘦池和缓存池等多种类型,实现灵活存储资源管理,需注意空间分配、R... 目录lvcreate命令详解一、命令概述二、语法格式三、核心功能四、选项详解五、使用示例1. 创建逻

C语言进阶(预处理命令详解)

《C语言进阶(预处理命令详解)》文章讲解了宏定义规范、头文件包含方式及条件编译应用,强调带参宏需加括号避免计算错误,头文件应声明函数原型以便主函数调用,条件编译通过宏定义控制代码编译,适用于测试与模块... 目录1.宏定义1.1不带参宏1.2带参宏2.头文件的包含2.1头文件中的内容2.2工程结构3.条件编

Linux下在线安装启动VNC教程

《Linux下在线安装启动VNC教程》本文指导在CentOS7上在线安装VNC,包含安装、配置密码、启动/停止、清理重启步骤及注意事项,强调需安装VNC桌面以避免黑屏,并解决端口冲突和目录权限问题... 目录描述安装VNC安装 VNC 桌面可能遇到的问题总结描js述linux中的VNC就类似于Window

linux下shell脚本启动jar包实现过程

《linux下shell脚本启动jar包实现过程》确保APP_NAME和LOG_FILE位于目录内,首次启动前需手动创建log文件夹,否则报错,此为个人经验,供参考,欢迎支持脚本之家... 目录linux下shell脚本启动jar包样例1样例2总结linux下shell脚本启动jar包样例1#!/bin