top的wa,mpstat的%iowait以及pidstat的%wait
pidstat 中, %wait 表示进程等待 CPU 的时间百分比。等待 CPU 的进程已经在 CPU 的就绪队列中,处于运行状态。可能是cpu很忙导致这个线程还没有抢到cpu的时间段。
top / mpstat 中 ,iowait% 则表示等待 I/O 的 CPU 时间百分比。等待 I/O 的进程则处于不可中断状态D。此时一直占用着cpu时间段,但是cpu不干活白白的浪费时间在等待io。
linux的cpu时间片一般是100ms
windows是10ms
iostat 命令详解
%steal:丢失时间占用cpu 作为一个参考
await 每一个IO请求的处理的平均时间(单位ms)。
svctm 表示平均每次设备I/O操作的服务时间(以毫秒为单位)。
%util 在统计时间内所有处理IO时间,除以总共统计时间。
%iowait: IO等待所占用的cup时间(重要) <30% (不同功能的服务器不同)
%idle: CPU处于中断(空闲)状态的时间.
注:一般来说%idie持续游走在20%以下,瓶颈出现在cpu的性能层面。
%iowait高而%idle在70%以上,瓶颈出现在i/o设备层面。
注:如果%iowait的值过高,表示硬盘存在I/O瓶颈,%idle值高,表示CPU较空闲,如果%idle值高但系统响应慢时,有可能是CPU等待分配内存,此时应加大内存容量。
%idle值如果持续低于10,那么系统的CPU处理能力相对较低,表明系统中最需要解决的资源是CPU。