Linux 性能优化笔记 --CPU总结

man proc/man pidstat/...

上下文切换:

  • 所谓自愿上下文切换,是指进程无法获取所需资源,导致的上下文切换。比如说, I/O、内存等系统资源不足时,就会发生自愿上下文切换。

  • 而非自愿上下文切换,则是指进程由于时间片已到等原因,被系统强制调度,进而发生的上下文切换。比如说,大量进程都在争抢 CPU 时,就容易发生非自愿上下文切换。

CPU使用率:

  • user(通常缩写为 us),代表用户态 CPU 时间。注意,它不包括下面的 nice 时间,但包括了 guest 时间。

  • nice(通常缩写为 ni),代表低优先级用户态 CPU 时间,也就是进程的 nice 值被调整为 1-19 之间时的 CPU 时间。这里注意,nice 可取值范围是 -20 到 19,数值越大,优先级反而越低。

  • system(通常缩写为sys),代表内核态 CPU 时间。

  • idle(通常缩写为id),代表空闲时间。注意,它不包括等待 I/O 的时间(iowait)。

  • iowait(通常缩写为 wa),代表等待 I/O 的 CPU 时间。

  • irq(通常缩写为 hi),代表处理硬中断的 CPU 时间。

  • softirq(通常缩写为 si),代表处理软中断的 CPU 时间。

  • steal(通常缩写为 st),代表当系统运行在虚拟机中的时候,被其他虚拟机占用的 CPU 时间。

  • guest(通常缩写为 guest),代表通过虚拟化运行其他操作系统的时间,也就是运行虚拟机的 CPU 时间。

  • guest_nice(通常缩写为 gnice),代表以低优先级运行虚拟机的时间。

进程状态:

  • R 是Running或者Runable的缩写,表示在CPU的就绪队列中,正在运行或者等待运行。
  • D 是Disk Sleep的缩写,不可中断睡眠状态(Uninterruptible Sleep),一般表示进程正在和硬件交互,并且交互过程不可以被其他进程或者中断打断。
  • Z 是Zombie的缩写,表示僵尸进程,也就是进程实际上结束了,但是父进程还没回收它的资源(如进程的描述符,PID等)。
  • S 是Interruptible Sleep的缩写,可中断睡眠状态,表示进程因为等待某个事件而被系统挂起,当进程等待的事件发生时,它会被唤醒进入R状态。
  • I 是Idle的缩写,空闲状态,用在不可中断睡眠的内核线程上。D表示硬件交互导致的不可中断进程,I表示并没有任何负载。D状态进程会导致平均负载升高,I状态进程不会。
  • 第一个是T或者t,是Stopped或者Traced的缩写,表示进程处于暂停或者跟踪状态。
  • X 是Dead的缩写,表示进程已经消亡,所以不会在top或者ps中看见。

如果状态是Ss+:后面的s代表这个进程是一个会话的领导进程,+ 表示前台进程组。进程组和会话用来管理一组相互关联的进程。

  • 进程组:表示一组相互关联的进程,比如每个子进程都是父进程所在组的成员。
  • 会话:指共享同一个控制终端的一个或多个进程组。

原文地址:https://www.cnblogs.com/tiandz/p/12735729.html