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

相关文章

Redis 的 SUBSCRIBE命令详解

《Redis的SUBSCRIBE命令详解》Redis的SUBSCRIBE命令用于订阅一个或多个频道,以便接收发送到这些频道的消息,本文给大家介绍Redis的SUBSCRIBE命令,感兴趣的朋友跟随... 目录基本语法工作原理示例消息格式相关命令python 示例Redis 的 SUBSCRIBE 命令用于订

防止Linux rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

Java使用jar命令配置服务器端口的完整指南

《Java使用jar命令配置服务器端口的完整指南》本文将详细介绍如何使用java-jar命令启动应用,并重点讲解如何配置服务器端口,同时提供一个实用的Web工具来简化这一过程,希望对大家有所帮助... 目录1. Java Jar文件简介1.1 什么是Jar文件1.2 创建可执行Jar文件2. 使用java

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

linux系统上安装JDK8全过程

《linux系统上安装JDK8全过程》文章介绍安装JDK的必要性及Linux下JDK8的安装步骤,包括卸载旧版本、下载解压、配置环境变量等,强调开发需JDK,运行可选JRE,现JDK已集成JRE... 目录为什么要安装jdk?1.查看linux系统是否有自带的jdk:2.下载jdk压缩包2.解压3.配置环境

Linux搭建ftp服务器的步骤

《Linux搭建ftp服务器的步骤》本文给大家分享Linux搭建ftp服务器的步骤,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录ftp搭建1:下载vsftpd工具2:下载客户端工具3:进入配置文件目录vsftpd.conf配置文件4:

Linux实现查看某一端口是否开放

《Linux实现查看某一端口是否开放》文章介绍了三种检查端口6379是否开放的方法:通过lsof查看进程占用,用netstat区分TCP/UDP监听状态,以及用telnet测试远程连接可达性... 目录1、使用lsof 命令来查看端口是否开放2、使用netstat 命令来查看端口是否开放3、使用telnet

Linux系统管理与进程任务管理方式

《Linux系统管理与进程任务管理方式》本文系统讲解Linux管理核心技能,涵盖引导流程、服务控制(Systemd与GRUB2)、进程管理(前台/后台运行、工具使用)、计划任务(at/cron)及常用... 目录引言一、linux系统引导过程与服务控制1.1 系统引导的五个关键阶段1.2 GRUB2的进化优

Linux查询服务器 IP 地址的命令详解

《Linux查询服务器IP地址的命令详解》在服务器管理和网络运维中,快速准确地获取服务器的IP地址是一项基本但至关重要的技能,下面我们来看看Linux中查询服务器IP的相关命令使用吧... 目录一、hostname 命令:简单高效的 IP 查询工具命令详解实际应用技巧注意事项二、ip 命令:新一代网络配置全