前提
- 当iowait升高时,进程很可能因为得不到硬件的响应,而长时间处于不可中断状态。
进程状态
- R(Running/Runnable): 表示进程在CPU的就绪队列中,正在运行或者正在等待运行。
- D(Disk Sleep): 不可中断状态睡眠,一般表示进程正在跟硬件交互,并且交互过程不允许被其他进程或中断打断。
- Z(Zombie): 僵尸进程,进程实际上已经结束了,但是父进程还没有回收他的资源(进程描述符,PID)。
- S(Interruptible Sleep): 可中断状态睡眠:表示进程因为等待某个事件而被系统挂起,当进程等待的事件发生时,它会被唤醒并进入R状态。
- I(idle): 空闲状态,用在不可中断睡眠的内核线程上。硬件交互导致的不可中断进程用D表示,但对某些内核线程来说,他们有可能实际上并没有任何负载,用idle正是为了区分这种情况。要注意,D状态的进程会导致平均负载升高,I状态的进程却不会。
- T/t(Stopped, Traced): 表示进程处于暂停或跟踪状态。
- X(Dead): 表示进程已经消亡。
相关工具
- dstat: 可以同时查看CPU和I/O这两种资源的使用情况。
- pidstat: -d展示I/O统计数据
- strace: 跟踪进程系统调用的工具