代码改变世界

top的wa,mpstat的%iowait以及pidstat的%wait

2023-02-27 15:40  清风软件测试开发  阅读(441)  评论(0编辑  收藏  举报

top的wa,mpstat的%iowait以及pidstat的%wait 

pidstat 中, %wait 表示进程等待 CPU 的时间百分比。等待 CPU 的进程已经在 CPU 的就绪队列中,处于运行状态。可能是cpu很忙导致这个线程还没有抢到cpu的时间段。

top / mpstat /iostat 中 ,iowait% 则表示等待 I/O 的 CPU 时间百分比。等待 I/O 的进程则处于不可中断状态D。此时一直占用着cpu时间段,但是cpu有可能不干活白白的浪费时间在等待io。如果%idle也高,则表明cpu在等待io的时候真的没有干活白白的浪费时间。

 

iowait实际测量的是cpu时间:  %iowait = (cpu idle time) / (all cpu time)

linux的cpu时间片一般是100ms
windows是10ms


iostat 命令详解
%steal:丢失时间占用cpu 作为一个参考
await 每一个IO请求的处理的平均时间(单位ms)。
svctm 表示平均每次设备I/O操作的服务时间(以毫秒为单位)。
%util 在统计时间内所有处理IO时间,除以总共统计时间。
%iowait: IO等待所占用的cup时间(重要) <30% (不同功能的服务器不同)。表明cpu在等待io所花费的时间,注意:CPU在等待io的时候,有可能在忙也有可能在空闲着。
%idle: CPU处于中断(空闲)状态的时间。表明cpu是真正的不干活,白白浪费cpu时间段。
注:一般来说%idie持续游走在20%以下,瓶颈出现在cpu的性能层面。
%iowait高而%idle在70%以上,瓶颈出现在i/o设备层面。
注:如果%iowait的值过高,表示硬盘存在I/O瓶颈,%idle值高,表示CPU较空闲,如果%idle值高但系统响应慢时,有可能是CPU等待分配内存,此时应加大内存容量。
%idle值如果持续低于10,那么系统的CPU处理能力相对较低,表明系统中最需要解决的资源是CPU。