I/O wait,在不同的Linux系统监控Monitor工具中(top, atop, htop, vmstat, mpstat, iostat等等),显示为iowait, wait, wa, %iowait, or wait%,表示的是:
CPU或者CPUs处于空闲状态,而此时存在未完成的磁盘I/O请求的时间
需要注意的是,这是个描述CPU或者CPUs(即系统全局)的值,而不是描述进程的值。一般来说,在描述CPU/系统时,有如下的若干值总和为100%:
sys + user + steal + iowait + idle = 100%
其中:
sys:在内核态运行的时间,有的会将sys细分,区分出
irq:处理中断的时间
soft:处理软中断的时间
user:在用户态运行的时间,有的会将user细分,区分出nice:
nice:用户态运行的通过nice提权的时间
iowait:系统空闲,有未完成的IO请求
idle:系统空闲(没有未完成的IO请求)
有的还会增加对虚拟机时间的细分:
guest:运行虚拟机的时间
gnice:nice提权的运行虚拟机的时间
但无论如何,这些值相加之后为100%,描述的是一个CPU,或者系统(CPUs)。而用于描述线程/进程的时间则为:
CPU:线程/进程在CPU上运行的时间,有的会分出:
usr:用户态的运行时间
sys:在内核态运行的时间,有的会将sys细分,区分出
有的会细分出:
guest:运行虚拟机的时间
并且这些占比之和也不是100%,因为这个百分比的分母是单个CPU的总时间,线程/进程上的时间百分比描述的只是这个线程运行时间占在单个CPU上运行时间的百分之几,而有的时候这个百分比会超过100%(甚至到百分之几千上万),这是因为这个进程(不可能是线程)分出的多个线程同时在N个CPU上重负荷运行。
换句话说,io wait的时间和idle的时间内,CPU都在空闲,只不过此时有无io请求在执行而已,因此会出现:
当CPU的处理能力提升的时候,IO wait的比例会升高
当CPU的处理能力降低的时候,IO wait的比例会降低
注意!
此外可以看到,在同步读写和异步读写两种情况中,可能总的操作时间差不多,但有:
同步读写中(sync IO,比如read(2)),sys占比高,iowait占比低,因为当执行IO请求的时候,CPU在等待,不算idle
异步读写中(async IO,比如io_submit(2)),iowait占比高,sys占比低,这是因为当执行IO请求时,CPU空闲,因为请求已经发送给设备,系统(或者说线程/进程)在等待中断发生,从而可以继续后面的操作。
推荐本站淘宝优惠价购买喜欢的宝贝:
本文链接:https://hqyman.cn/post/8886.html 非本站原创文章欢迎转载,原创文章需保留本站地址!
休息一下~~