首页 > 系统相关 >Linux之iostat

Linux之iostat

时间:2023-10-12 14:57:21浏览次数:54  
标签:kB 0.00 iostat svctm Linux 磁盘 CPU

Linux之iostat

前言

iostat主要用于监控系统设备的IO负载情况。
iostat首次运行时显示自系统启动开始的各项统计信息,之后运行iostat将显示自上次运行该命令以后的统计信息。
用户可以通过指定统计的次数和时间来获得所需的统计信息。

1.命令功能:

通过iostat方便查看CPU、网卡、tty设备、磁盘、CD-ROM 等等设备的活动情况,负载信息。

2.命令格式:

命令安装:

yum install sysstat -y

命令格式:

iostat [参数] [时间间隔] [次数] 

3.命令参数:

-C 显示CPU使用情况
-d 显示磁盘使用情况
-k 以 KB 为单位显示
-m 以 M 为单位显示
-N 显示磁盘阵列(LVM) 信息
-n 显示NFS 使用情况
-p[磁盘] 显示磁盘和分区的情况
-t 显示终端和CPU的信息
-x 显示详细信息
-V 显示版本信息 

4.基本使用

  • 示例1:
[root@redis-1 bin]# iostat
Linux 3.10.0-1062.el7.x86_64 (redis-1)     09/04/2021     _x86_64_    (4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           1.35    0.00    0.75    0.97    0.00   96.92

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda              20.50         0.30       128.33     672072  288471366
dm-0             20.67         0.28       128.33     636688  288467124
dm-1              0.00         0.00         0.00       3236          0
dm-2              0.00         0.00         0.00       1192       2088

输出说明:

  1. avg-cpu: 总体cpu使用情况统计信息,对于多核cpu,这里为所有cpu的平均值。重点关注iowait值,表示CPU用于等待io请求的完成时间。
  2. Device: 各磁盘设备的IO统计信息。各列含义如下:
  • Device: 以sdX形式显示的设备名称。

  • tps: 每秒进程下发的IO读、写请求数量。

  • KB_read/s: 每秒从驱动器读入的数据量,单位为K。

  • KB_wrtn/s: 每秒从驱动器写入的数据量,单位为K。

  • KB_read: 读入数据总量,单位为K。

  • KB_wrtn: 写入数据总量,单位为K。

  • 示例2:

[root@redis-1 bin]# iostat -d -k 1 10
Linux 3.10.0-1062.el7.x86_64 (redis-1)     09/04/2021     _x86_64_    (4 CPU)

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda              20.61         0.30       128.71     672072  289423385
dm-0             20.77         0.28       128.70     636688  289419143
dm-1              0.00         0.00         0.00       3236          0
dm-2              0.00         0.00         0.00       1192       2088

参数说明:

  • -d表示:显示设备(磁盘)使用状态;
  • -k表示:某些使用block为单位的列强制使用Kilobytes为单位;
  • l 10表示:数据显示每隔1秒刷新一次,共显示10次。

输出说明:同上。

5.属性说明

  • disk属性值说明:
rrqm/s: 每秒进行 merge 的读操作数目。即 rmerge/s(每秒对该设备的读请求被合并次数,文件系统会对读取同块(block)的请求进行合并)
wrqm/s: 每秒进行 merge 的写操作数目。即 wmerge/s(每秒对该设备的写请求被合并次数)
r/s: 每秒完成的读 I/O 设备次数。即 rio/s
w/s: 每秒完成的写 I/O 设备次数。即 wio/s
rsec/s: 每秒读扇区数。即 rsect/s
wsec/s: 每秒写扇区数。即 wsect/s
rkB/s: 每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。
wkB/s: 每秒写K字节数。是 wsect/s 的一半。
avgrq-sz: 平均每次设备I/O操作的数据大小 (扇区)。
avgqu-sz: 平均I/O队列长度。
await: 平均每次设备I/O操作的等待时间 (毫秒)。
svctm: 平均每次设备I/O操作的处理时间 (毫秒)。
%util: 一秒中有百分之多少的时间用于 I/O 操作,即被io消耗的cpu百分比

备注:

  1. 如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。
  2. 如果 svctm 比较接近 await,说明 I/O 几乎没有等待时间;
  3. 如果 await 远大于 svctm,说明I/O 队列太长,io响应太慢,则需要进行必要优化。
  4. 如果 avgqu-sz比较大,也表示有当量io在等待
  • cpu属性值说明:
%user:CPU处在用户模式下的时间百分比。
%nice:CPU处在带NICE值的用户模式下的时间百分比。
%system:CPU处在系统模式下的时间百分比。
%iowait:CPU等待输入输出完成时间的百分比。
%steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比。
%idle:CPU空闲时间百分比。

备注:

  1. 如果 %iowait 的值过高,表示硬盘存在I/O瓶颈%idle 值高,表示CPU较空闲
  2. 如果 %idle 值高但系统响应慢时,有可能是CPU等待分配内存,此时应加大内存容量。
  3. 如果 %idle 值持续低于10,那么系统的CPU处理能力相对较低,表明系统中最需要解决的资源是CPU。

6.常见用法

iostat -d -k 1 10 #查看TPS和吞吐量信息
iostat -d -x -k 1 10 #查看设备使用率(%util)、响应时间(await)
iostat -c 1 10 #查看cpu状态 

7.实例分析

  • 实例1:

下面看到,磁盘每秒传输次数平均约400;每秒磁盘读取约5MB,写入约1MB。

iostat -d -k 1 |grep sda10
Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn   
sda10            60.72        18.95        71.53  395637647 1493241908
sda10           299.02      4266.67       129.41       4352        132
sda10           483.84      4589.90      4117.17       4544       4076
sda10           218.00      3360.00       100.00       3360        100
sda10           546.00      8784.00       124.00       8784        124
sda10           827.00     13232.00       136.00      13232        136
  • 实例2:

可以看到磁盘的平均响应时间<5ms,磁盘使用率>80。磁盘响应正常,但是已经很繁忙了(主要是看%util和svctm)。

iostat -d -x -k 1
Device:    rrqm/s wrqm/s   r/s   w/s  rsec/s  wsec/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
sda          1.56  28.31  7.84 31.50   43.65    3.16    21.82     1.58     1.19     0.03    0.80   2.61  10.29
sda          1.98  24.75 419.80  6.93 13465.35  253.47  6732.67   126.73    32.15     2.00    4.70   2.00  85.25
sda          3.06  41.84 444.90 54.08 14204.08 2048.98  7102.04  1024.49    32.57     2.10    4.21   1.85  92.24 

8.总结

  1. 如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。
  2. idle小于70% IO压力就较大了,一般读取速度有较多的wait。
  3. 同时可以结合vmstat 查看b参数(等待资源的进程数)和wa参数(IO等待所占用的CPU时间的百分比,高过30%时IO压力高)。
  4. await 的参数也要多和 svctm 来参考。差的过高就一定有 IO 的问题。
  5. avgqu-sz 也是个做 IO 调优时需要注意的地方,这个就是直接每次操作的数据的大小,如果次数多,但数据拿的小的话,其实 IO 也会很小。如果数据拿的大,才IO 的数据会高。
  6. svctm 一般要小于 await (因为同时等待的请求的等待时间被重复计算了),svctm 的大小一般和磁盘性能有关,CPU/内存的负荷也会对其有影响,请求过多也会间接导致 svctm 的增加。
  7. await 的大小一般取决于服务时间(svctm) 以及 I/O 队列的长度和 I/O 请求的发出模式。
  8. 如果 svctm 比较接近 await,说明 I/O 几乎没有等待时间;如果 await 远大于 svctm,说明 I/O 队列太长,应用得到的响应时间变慢,如果响应时间超过了用户可以容许的范围,这时可以考虑更换更快的磁盘,调整内核 elevator 算法,优化应用,或者升级 CPU。

参考:https://www.jianshu.com/p/cec0b9f052cb

标签:kB,0.00,iostat,svctm,Linux,磁盘,CPU
From: https://www.cnblogs.com/JaxYoun/p/17759443.html

相关文章

  • Linux 日志按时间、按行截取方式
    Linux日志按时间、按行截取方式代码脚本之家 2023-10-0812:53 发表于上海收录于合集#linux2个#日志1个1.截取catalina.out某段时间内的日志信息:sed-n'/2023-09-23 14:00:/,/2023-09-23 15:00:/p'catalina.out>seg.log2.按行截取日志先按照关键字找到相应......
  • linux TCP 通信流程 套接字函数
    TCP和UDP  -> 传输层的协议UDP:用户数据报协议,面向无连接,可以单播,多播,广播,面向数据报(类似战争中无线电的广播),不可靠。TCP:传输控制协议,面向连接的,可靠的,基于字节流,仅支持单播传输(点对点)。UDP TCP......
  • Linux快捷键及History用法
    Linux快捷键及History用法1.bash的快捷键Ctrl+l清屏,相当于clear命令Ctrl+o执行当前命令,并重新显示本命令Ctrl+s阻止屏幕输出,锁定Ctrl+q允许屏幕输出,解锁Ctrl+c终止命令Ctrl+z挂起命令Ctrl+a光标移到命令行首,相当于HomeCtrl+e光标移到命令......
  • Linux 中awk命令根据索引文件批量提取列和行
     001、批量提取列,根据索引index.txt文件批量提取2、4、8、9列[root@pc1test2]#lsa.txtindex.txt[root@pc1test2]#cata.txt##测试文件00100200300400500600700800901001101201301401501601701801902002102202302402502602......
  • 面试被问 Linux 命令 su 和 sudo 的区别
    之前一直对 su 和 sudo 这两个命令犯迷糊,最近专门搜了这方面的资料,总算是把两者的关系以及用法搞清楚了,这篇文章来系统总结一下。1、准备工作因为本篇博客中涉及到用户切换,所以我需要提前准备好几个测试用户,方便后续切换。Linux中新建用户的命令是 useradd ,一般系统中这个命......
  • kali linux 设置固定IP
    1.修改文件/etc/network/interfaces┌──(kali㉿kali)-[~]└─$sudovi/etc/network/interfaces#Thisfiledescribesthenetworkinterfacesavailableonyoursystem#andhowtoactivatethem.Formoreinformation,seeinterfaces(5).source/etc/network/in......
  • linux系统和windows系统检测磁盘大小报警
    1.应用场景需要往磁盘中存储图片和或者数据,需要检测磁盘大小,当小于5GB的时候提示用户,并停止存储图片和数据,避免磁盘塞满,无法启动系统或者操作电脑;2.实现方法用一个定时器去定时查询磁盘空间大小,linux系统,采用QProess执行命令,然后解析命令返回值,获取剩余的磁盘空间voidFaceM......
  • 小干货~ NFS在Linux系统中的应用
    Linux系统中的经典的语句”一切皆文件”,意思就是说在Linux系统中,我们要达成任何目标,都是通过配置文件去实现的。既然这样,那我们就少不了跟文件打交道,今天就跟大家分享下如何在Linux系统中配置网络文件系统(NetworkFileSystem,NFS)服务来达到Linux系统之间的文件共享的目的。......
  • ulimit命令-限制linux内核的资源大小-(用户级,系统级2种限制)
    ulimit命令-限制linux内核的资源大小ulimit-n查看linux系统的最大文件打开数设置最大文件打开数的大小:临时设置:ulimit-SHn 65535-S表示软限制-H表示硬限制永久生效:文件:/etc/security/limits.conf添加2行:*  soft nofile65535* hard  nofile65535上面的*......
  • [扫盲]在linux上查询gpu占用
    参考资料:how-to-measure-gpu-usage按显卡厂家来区分:NvidiaGPU:nvidia-smi或者gpustatIntelGPU:intel-gpu-toolsAmdGPU:aticonfig--odgc--odgt......