Pab*_*blo 6 linux centos cpu-usage load-average
我正在监控一个 Cpanel (centos) 服务器,它有一个 2 核 CPU(4 个虚拟 CPU 核),它似乎过载了,因为我使用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
Run Code Online (Sandbox Code Playgroud)
但是,如果我查看过程列表(使用 top 或 ps),则没有过程使用超过 1%
此外,进程 CPU 使用率 (%) 的总和等于 4,如果我什至假设 0% 值是四舍五入的数字,并将其更改为 0.04(使用 1 个十进制数字四舍五入为 0),则总和为 11(仍然小于100%)。
我如何正确解释这些数据?是否有一些隐藏的过程使我的 CPU 过载。
在 Linux 上,阻塞的进程也会影响平均负载。该命令ps -Al
列出所有进程。在其输出的第二列(S 代表状态)中,您将找到过程状态。大多数情况下,我有进程在等待磁盘“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.
Run Code Online (Sandbox Code Playgroud)
样本输出
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 初始化 1 S 0 2 0 0 80 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 装载机
如果这些是您唯一的进程,我们会看到大约 2 个负载,1 个用于 CPU 猪“运行器”,另一个用于等待磁盘的加载器。
维基百科上提供的信息非常准确
空闲计算机的负载数为 0。每个使用或等待 CPU(就绪队列或运行队列)的进程将负载数增加 1。大多数 UNIX 系统仅计算正在运行(在 CPU 上)或可运行(等待CPU)状态。然而,Linux 还包括处于不间断睡眠状态(通常等待磁盘活动)的进程,如果由于繁忙或停滞的 I/O 系统而导致许多进程在 I/O 中被阻塞,这可能会导致明显不同的结果。1例如,这包括由于 NFS 服务器故障或慢速媒体(例如 USB 1.x 存储设备)而导致的进程阻塞。这种情况可能会导致平均负载升高,这并不能反映 CPU 使用的实际增加(但仍然可以了解用户必须等待多长时间)。