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-基础知识3

打包和压缩 zip 安装zip软件包 yum -y install zip unzip 压缩打包命令: zip -q -r -d -u 压缩包文件名 目录和文件名列表 -q:不显示命令执行过程-r:递归处理,打包各级子目录和文件-u:把文件增加/替换到压缩包中-d:从压缩包中删除指定的文件 解压:unzip 压缩包名 打包文件 把压缩包从服务器下载到本地 把压缩包上传到服务器(zip

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

30常用 Maven 命令

Maven 是一个强大的项目管理和构建工具,它广泛用于 Java 项目的依赖管理、构建流程和插件集成。Maven 的命令行工具提供了大量的命令来帮助开发人员管理项目的生命周期、依赖和插件。以下是 常用 Maven 命令的使用场景及其详细解释。 1. mvn clean 使用场景:清理项目的生成目录,通常用于删除项目中自动生成的文件(如 target/ 目录)。共性规律:清理操作

Linux_kernel驱动开发11

一、改回nfs方式挂载根文件系统         在产品将要上线之前,需要制作不同类型格式的根文件系统         在产品研发阶段,我们还是需要使用nfs的方式挂载根文件系统         优点:可以直接在上位机中修改文件系统内容,延长EMMC的寿命         【1】重启上位机nfs服务         sudo service nfs-kernel-server resta

【Linux 从基础到进阶】Ansible自动化运维工具使用

Ansible自动化运维工具使用 Ansible 是一款开源的自动化运维工具,采用无代理架构(agentless),基于 SSH 连接进行管理,具有简单易用、灵活强大、可扩展性高等特点。它广泛用于服务器管理、应用部署、配置管理等任务。本文将介绍 Ansible 的安装、基本使用方法及一些实际运维场景中的应用,旨在帮助运维人员快速上手并熟练运用 Ansible。 1. Ansible的核心概念

Linux服务器Java启动脚本

Linux服务器Java启动脚本 1、初版2、优化版本3、常用脚本仓库 本文章介绍了如何在Linux服务器上执行Java并启动jar包, 通常我们会使用nohup直接启动,但是还是需要手动停止然后再次启动, 那如何更优雅的在服务器上启动jar包呢,让我们一起探讨一下吧。 1、初版 第一个版本是常用的做法,直接使用nohup后台启动jar包, 并将日志输出到当前文件夹n

[Linux]:进程(下)

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:Linux学习 贝蒂的主页:Betty’s blog 1. 进程终止 1.1 进程退出的场景 进程退出只有以下三种情况: 代码运行完毕,结果正确。代码运行完毕,结果不正确。代码异常终止(进程崩溃)。 1.2 进程退出码 在编程中,我们通常认为main函数是代码的入口,但实际上它只是用户级