我正在监视一个具有双核CPU(4个虚拟CPU核心)的Cpanel(centos)服务器,它似乎被重载,因为我使用top得到了这个值:
load average: 11.80, 13.30, 13.02 Cpu(s): 42.2%us, 11.7%sy, 0.0%ni, 35.6%id, 10.1%wa, 0.1%hi, 0.3%si, 0.0%st
但是,如果我看一下进程列表(使用top或ps),没有进程使用多于1%
此外,进程CPU使用率(%)的总和等于4,如果我甚至假设0%值是舍入数字,并将其更改为0.04(使用1个十进制数字进行舍入为0),总和为11(仍然小于100%)。
我怎样才能正确解释这些数据呢?是否有一些隐藏的处理过载了我的cpu。
在Linux上,被阻塞的进程也会影响负载平均值。 命令ps -Al列出所有进程。 在其输出的第二列(S表示状态)中,您将find过程状态。 大多数情况下,我都有等待磁盘“D”的进程,这些进程会计入负载平均值。
从ps手册页的状态完整列表是
D Uninterruptible sleep (usually IO) R Running or runnable (on run queue) S Interruptible sleep (waiting for an event to complete) T Stopped, either by a job control signal or because it is being traced. W paging (not valid since the 2.6.xx kernel) X dead (should never be seen) Z Defunct ("zombie") process, terminated but not reaped by its parent.
示例输出
FS UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 4 S 0 1 0 0 80 0 - 4906 poll_s? 00:00:23 init 1 S 0 2 0 0 80 0 0 0 kthrea? 00:00:02 kthreadd 1 R 0 3 0 99 80 0 - 0? 01:00:02亚军 1 D 0 4 0 1 80 0 - 0? 装载机01:00:02
如果这些是你唯一的进程,你可以看到CPU负载大约为2,1,而另外一个负载等待磁盘的负载。
非常精确的是在维基百科提供的信息
一个空闲的计算机的加载数为0.每个使用或等待CPU的进程(就绪队列或运行队列)将加载数量递增1.大多数UNIX系统只计算正在运行(在CPU上)或可运行的进程(等待CPU)状态。 但是,Linux还包括处于不间断睡眠状态(通常等待磁盘活动)的进程,如果由于I / O系统繁忙或停顿导致许多进程在I / O中被阻塞,则可能会导致明显不同的结果。 1例如,这包括由于NFS服务器故障或缓慢介质(例如,USB 1.x存储设备)而导致的进程阻塞。 这样的情况可能导致平均负载的提高,这并不反映CPU使用的实际增加(但仍然给出用户需要等待多长时间的想法)。
您提供的顶部信息并不一定意味着超载:
或者更确切地说,如果超载,意味着有一些限制,那么可能会有很多方面:CPU限制,networking和/或磁盘I / O限制,内存使用限制等。
你不应该尝试去匹配不同的CPU负载/使用视图 – 它们通常意味着不同的事情,视图也是在不同的时间戳上收集的(统计信息收集不是primefaces的):
彼得是对的。 但是这并没有回答你的问题。 给它12个逻辑CPU,使负载降到CPU数量以下。 这样,任何进程或线程都不得不等待额外的CPU周期来获得执行时间。
在顶部也打开线程视图。
我怀疑你有一些multithreading的过程。
11%系统时间可能表示networking瓶颈。