测量负载 – %最高的CPU不同于%us

当我在远程服务器上运行TOP时,我看到一个非常小的系统利用率(3.8%)。 但是,在实际的过程中,我看到了29.6%的CPU。

由于这个服务器有8个CPU核心,CPU占用率只有1个CPU,而us最多的是8个CPU。

当我用29除以8时,我得到了3.7这看起来validation我的猜测。 所以问题:

  • 我看到的低利用率实际上是超过8个CPU,而%CPU是用于该进程正在使用的CPU?
  • 使用多个CPU的进程会发生什么情况?
  • 如果需要,tomcat是否使用多个CPU? 或者如果负载增加,tomcat会崩溃,但我们永远不会被告知高负载

顶部输出

  top - 12:17:40 up 9 days, 21:51, 2 users, load average: 0.32, 0.28, 0.27 Tasks: 201 total, 2 running, 199 sleeping, 0 stopped, 0 zombie Cpu(s): 3.8%us, 0.1%sy, 0.0%ni, 96.1%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 16229072k total, 5617572k used, 10611500k free, 156480k buffers Swap: 8388588k total, 0k used, 8388588k free, 2632452k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 32676 tomcat 20 0 12.4g 2.3g 10m S 29.6 14.6 2530:56 java 

我已经检查了诸如http://www.kernelhardware.org/linux-top-command/的资料 ,但是其中没有一个区分%us%CPU

只有一些不明确的信息,如: %CPU – Percentage of CPU used

top显示的CPU百分比是所有CPU组合的百分比。 要查看每个CPU的统计信息,请在top运行时按1

另一方面,进程列表中的百分比是单个CPU内核的百分比,因此可能会超过100%。