iostat查看磁盘IO

一、阈值
util应在10%以内(或者top命令查看,%wa很高而%us偏低时,可能存在IO瓶颈)
复制代码
[root@k8s-master ~]# iostat -xkd 1
Linux 3.10.0-1160.108.1.el7.x86_64 (k8s-master) 	02/27/2024 	_x86_64_	(2 CPU)

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0.00     0.19    3.07    7.30   172.03    72.21    47.10     0.01    0.64    1.03    0.48   0.31   0.32

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0.00     0.00    0.00    8.00     0.00    32.00     8.00     0.01    0.62    0.00    0.62   0.38   0.30

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               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

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0.00     0.00    0.00    9.00     0.00    36.00     8.00     0.00    0.22    0.00    0.22   0.11   0.10

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               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

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0.00     8.00    0.00   35.00     0.00   292.50    16.71     0.04    1.14    0.00    1.14   0.23   0.80

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0.00     0.00   10.00   14.00   288.00    62.50    29.21     0.01    0.25    0.30    0.21   0.25   0.60
iostat 是 Linux 系统中用于监控系统输入输出设备负载情况的命令,-xkd 1 参数分别表示:
1. -x:显示扩展统计信息,包括设备利用率 %util 等。
2. -k:以 KB 为单位显示传输量。
3. -d:仅显示块设备统计信息(如磁盘)。
4. 1:后面跟的时间间隔参数,表示每隔 1 秒采集一次数据。
以下是您提供的 iostat 输出结果各字段的含义:
1. Device:设备名称,在这里为sda,即第一块 SCSI 或 SATA 磁盘设备。
2. rrqm/s:每秒读取请求合并次数(Read requests merged per second)。
3. wrqm/s:每秒写入请求合并次数(Write requests merged per second)。
4. r/s:每秒读取操作次数(Read operations per second)。
5. w/s:每秒写入操作次数(Write operations per second)。
6. rkB/s:每秒读取的数据量,单位KB(Read Kilobytes per second)。
7. wkB/s:每秒写入的数据量,单位KB(Write Kilobytes per second)。
8. avgrq-sz:平均每次IO请求的扇区数(Average Request Size)。
9. avgqu-sz:每个设备的平均等待队列长度(Average Queue Length)。
10. await:所有IO请求的平均服务时间,包括等待时间和处理时间(Average Time for I/O Operations to Complete)。
11. r_await:只针对读请求的平均服务时间。
12. w_await:只针对写请求的平均服务时间。
13. svctm:I/O 请求的服务时间(Service Time),即完成单个 I/O 请求所花费的时间。
14. %util:设备利用率,即一秒中有百分之多少的时间用于处理 I/O 请求。如果该值持续接近100%,则可能存在I/O瓶颈。
复制代码
top - 18:20:56 up  4:35,  3 users,  load average: 0.38, 0.50, 0.46
Tasks: 268 total,   1 running, 267 sleeping,   0 stopped,   0 zombie
%Cpu(s):  4.4 us,  3.0 sy,  0.0 ni, 92.1 id,  0.0 wa,  0.0 hi,  0.5 si,  0.0 st
KiB Mem :  3861084 total,   182496 free,  1937152 used,  1741436 buff/cache
KiB Swap:        0 total,        0 free,        0 used.  1614960 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                          
  4048 root      20   0 1111868 322376  45340 S   6.3  8.3  14:29.45 kube-apiserver                                                                                                   
   976 root      20   0 1655316  83296  36640 S   3.3  2.2   8:40.70 kubelet                                                                                                          
  2337 root      20   0  825616  91600  32792 S   1.7  2.4   6:23.68 kube-controller                                                                                                  
  3705 root      20   0   10.7g  60492  15588 S   1.3  1.6   4:15.50 etcd                                                                                                             
  5788 root      20   0 1672716  44036  22024 S   1.3  1.1   3:49.83 calico-node                                                                                                      
  1158 root      20   0 1905868  89692  27864 S   1.0  2.3   3:27.24 dockerd                                                                                                          
  2865 root      20   0 3545624 234616  81236 S   1.0  6.1   2:42.34 gnome-shell                                                                                                      
  3039 root       9 -11 1285548   9644   4664 S   1.0  0.2   0:08.30 pulseaudio                                                                                                       
  4539 root      20   0  720048  10624   4224 S   0.7  0.3   0:03.45 containerd-shim                                                                                                  
   299 root      20   0       0      0      0 S   0.3  0.0   0:11.10 xfsaild/sda3                                                                                                     
  3675 root      20   0  754540  38892  18576 S   0.3  1.0   0:48.20 kube-scheduler                                                                                                   
  5220 polkitd   20   0 1125568  32332  16188 S   0.3  0.8   0:04.38 kube-controller                                                                                                  
  5237 root      20   0  750568  32308  15192 S   0.3  0.8   0:19.05 coredns                                                                                                          
 23628 root      20   0  694172  33548  19204 S   0.3  0.9   0:24.84 gnome-terminal-                                                                                                  
119975 root      20   0  164328   2476   1612 R   0.3  0.1   0:00.06 top                                                                                                              
     1 root      20   0  128760   7496   4256 S   0.0  0.2   0:23.25 systemd                                                                                                          
     2 root      20   0       0      0      0 S   0.0  0.0   0:00.01 kthreadd                                                                                                         
     4 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H                                                                                                     
     6 root      20   0       0      0      0 S   0.0  0.0   0:05.76 ksoftirqd/0                                                                                                      
     7 root      rt   0       0      0      0 S   0.0  0.0   0:00.40 migration/0                                                                                                      
     8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcu_bh                                                                                                           
     9 root      20   0       0      0      0 S   0.0  0.0   0:23.25 rcu_sched                                                                                                        
    10 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 lru-add-drain                                                                                                    
    11 root      rt   0       0      0      0 S   0.0  0.0   0:00.10 watchdog/0                                                                                                       
    12 root      rt   0       0      0      0 S   0.0  0.0   0:00.09 watchdog/1                                                                                                       
    13 root      rt   0       0      0      0 S   0.0  0.0   0:00.38 migration/1                                                                                                      
    14 root      20   0       0      0      0 S   0.0  0.0   0:05.73 ksoftirqd/1                                                                                                      
    16 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/1:0H                                                                                                     
    18 root      20   0       0      0      0 S   0.0  0.0   0:00.00 kdevtmpfs                                                                                                        
    19 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 netns                                                                                                            
    20 root      20   0       0      0      0 S   0.0  0.0   0:00.01 khungtaskd                                                                                                       
    21 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 writeback                                                                                                        
    22 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kintegrityd                                                                                                      
    23 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 bioset    

top命令详细解释

top:是一个基于终端的实时进程查看器命令,可以用来查看系统进程的信息,包括进程的PID、CPU使用率、内存使用情况等,还可以进行一些操作,如发送信号、调整优先级等。
05:49:19:表示当前系统时间,格式为hh:mm:ss。
up 1:35:表示系统已经运行了1小时35分钟,即系统的运行时间。
3 users:表示当前登录系统的用户数量。
load average: 0.10, 0.06, 0.06:分别表示系统的平均负载,过去1分钟、5分钟、15分钟内的平均负载。
Tasks: 222 total, 1 running, 221 sleeping, 0 stopped, 0 zombie:表示当前系统中所有进程的情况,其中:
total:所有进程的数量。running:正在运行的进程数量。sleeping:休眠状态的进程数量。stopped:已停止的进程数量。zombie:僵尸进程的数量。
%Cpu(s): 0.2 us, 0.0 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st:表示CPU的使用情况,其中:
us:用户态CPU时间占用百分比。sy:内核态CPU时间占用百分比。ni:优先级较高的进程CPU时间占用百分比。id:CPU空闲时间占用百分比。wa:等待I/O数据的CPU时间占用百分比。hi:硬件中断时间占用百分比。si:软件中断CPU时间占用百分比。st:使用虚拟化技术的情况下,用于处理其他虚拟机需要的CPU时间占用百分比。
KiB Mem : 1863252 total, 98244 free, 1133500 used, 631508 buff/cache:表示内存使用情况,其中:
total:内存总量。free:空闲内存量。used:已使用内存量。buff/cache:Buffer和Cache占用的内存量
KiB Swap: 2097148 total, 2094836 free, 2312 used. 438260 avail Mem:表示交换空间使用情况,其中:
total:交换空间总量。free:空闲交换空间大小。used:已使用交换空间大小。avail Mem:可用内存大小
让我们逐个解释每个字段:
PID(进程ID): 每个正在运行的进程都有一个唯一的进程ID,用来标识进程。可以通过该ID来查找和操作进程。
USER(用户): 运行该进程的用户。
PR(优先级): 进程的优先级。可以是一个静态值(3-20)或一个动态值(即一个负数)。
NI(Nice值): 进程的Nice值,用于调整进程调度的优先级。较高的Nice值表示较低的优先级。
VIRT(虚拟内存): 进程使用的虚拟内存大小,包括所有分配给进程的虚拟内存区域的大小。
RES(常驻内存): 进程使用的物理内存大小,即常驻内存区域的大小。
SHR(共享内存): 进程使用的共享内存大小,即多个进程共享的内存区域的大小。
S(状态): 进程的状态。常见的状态包括:R(运行)、S(睡眠)、Z(僵尸)、D(不可中断的睡眠)等。
%CPU%MEM: 进程的CPU和内存使用率。
TIME+(运行时间): 进程已经运行的时间。
COMMAND(命令): 运行的命令或脚本的名称。
  • 命令:

    top

  • 作用:实时查看系统运行情况和健康状态。

  • 命令与参数:

|-----|-----------|---------------|--------------|
| 命令名 | 更新时间间隔(秒) | 不显示任何闲置或者僵死进程 | 通过进程id监控单一进程 |
| top | -d 间隔秒数 | -i | -p 进程id |

  • 操作控制:

|----|------------------|
| 按键 | 功能 |
| P | 默认值,根据CPU使用率排序 |
| M | 以内存的使用率排序 |
| N | 以PID排序 |
| d | 设置数据刷新的时间间隔,单位是秒 |
| q | 退出 |

  • 示例:指定间隔秒数,默认为 3 秒

    top -d 2

  • 示例:不显示僵尸进程

    top -i

  • 示例:监控单一线程

    top -p 1189

  • 示例:操作控制
  • 示例:查询结果字段解释
  • 第一行信息为任务队列信息:

|-------------------------------|-------------------------------------------------------|
| 内容举例 | 说明 |
| 14:12:01 | 系统当前时间 |
| up 6:04 | 系统的运行时间,前面例子表示本机已经运行6小时4分钟 |
| 2 users | 当前登录了2个用户 |
| load average:0.00, 0.02, 0.05 | 系统在之前1分钟,5分钟,15分钟的平均负载。 一般认为小于1时,负载较小。如果大于1,系统已经超出负荷。 |

  • 第二行为进程信息:

|------------------|-----------------------|
| 内容举例 | 说明 |
| Tasks: 210 total | 系统中的进程总数 |
| 1 running | 正在运行的进程数 |
| 209 sleeping | 睡眠的进程 |
| 0 stopped | 正在停止的进程 |
| 0 zombie | 僵尸进程。如果不是0,需要手工检查僵尸进程 |

  • 第三行为 CPU 信息:

|---------------|------------------------------------------------------------------------|
| 内容举例 | 说明 |
| Cpu(s):3.0%us | 用户空间占用的CPU百分比,us对应user |
| 3.0%sy | 内核空间占用的CPU百分比,sy对应system |
| 0.0%ni | 改变过优先级的进程占用的CPU百分比,ni对应niced |
| 93.9%id | 空闲CPU的CPU百分比 |
| 0.1%wa | 等待输入/输出的进程的占用CPU百分比,wa对应IO wait |
| 0.0%hi | 硬中断请求服务占用的CPU百分比,hi对应hardware IRQ |
| 0.0%si | 软中断请求服务占用的CPU百分比,si对应software IRQ |
| 0.0%st | st(Steal time)虚拟时间百分比,也叫被hypervisor偷走的时间。 就是当有虚拟机时,虚拟CPU等待实际CPU的时间百分比。 |

  • 第四行为物理内存信息:

|--------------------|--------------|
| 内容举例 | 说明 |
| 3861295 total | 物理内存的总量,单位KB |
| 1037800 free | 空闲的物理内存数量 |
| 943564 used | 已经使用的物理内存数量 |
| 1879928 buff/cache | 作为缓冲的内存数量 |

  • 使用中的内存总量(used)指的是现在系统内核控制的内存数,空闲内存总量(free)是还未纳入内核管控范围的数量。

  • 纳入内核管理的内存不见得都在使用中,还包括过去使用过的现在可以被重复利用的内存,内核并不把这些可被重新使用的内存还给 free ,因此 Linux 系统运行过程中 free 内存会越来越少,但不影响系统运行。因为这表示更多的空闲内存被内核管理了。

  • 第五行为交换分区(swap)信息:

|-------------------|--------------------------|
| 内容举例 | 说明 |
| 3145724 total | 交换分区(虚拟内存)的总大小 |
| 3145724 free | 空闲交换分区的大小 |
| 0 used | 已经使用的交互分区的大小 |
| 2649008 avail Mem | 在不交换的情况下,对启动新应用程序可用内存的估计 |

交换分区是一个非常值得关注的地方,如果 swap 区的 used 数值持续发生变化那么说明在内核和交换分区之间正在持续发生数据交换,这表示内存不够用了------必须不断把内存中的数据保存到硬盘上。

相关推荐
AnalogElectronic2 小时前
linux 测试网络和端口是否连通的命令详解
linux·网络·php
Edward111111112 小时前
4月28日防火墙问题
linux·运维·服务器
面汤放盐3 小时前
何时使用以及何时不应使用微服务:没有银弹
java·运维·云计算
子琦啊3 小时前
【算法复习】字符串 | 两个底层直觉,吃透高频题
linux·运维·算法
AOwhisky4 小时前
Kubernetes 学习笔记:集群管理、命名空间与 Pod 基础
linux·运维·笔记·学习·云原生·kubernetes
小龙在慢慢变强..5 小时前
目录结构(FHS 标准)
linux·运维·服务器
2035去旅行5 小时前
嵌入式开发,如何选择C标准库
linux·arm开发
刘延林.5 小时前
win11系统下通过 WSL2 安装Ubuntu 24.04 使用RTX 5080 GPU
linux·运维·ubuntu
CodeOfCC6 小时前
Linux 嵌入式arm64安装openclaw
linux·运维·服务器
宵时待雨7 小时前
linux笔记归纳3:linux开发工具
linux·运维·笔记