我正在监控一个有 2 核 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 超载。
答案1
在 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.
示例输出
FS UID PID PPID C PRI NI 地址 SZ WCHAN TTY 时间 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 的“运行器”,另外 1 用于等待磁盘的加载器。
非常精确的信息维基百科
空闲计算机的负载数为 0。每个使用或等待 CPU 的进程(就绪队列或运行队列)都会使负载数增加 1。大多数 UNIX 系统仅计算处于运行(在 CPU 上)或可运行(等待 CPU)状态的进程。但是,Linux 还包括处于不可中断睡眠状态(通常等待磁盘活动)的进程,如果由于 I/O 系统繁忙或停滞而导致许多进程在 I/O 中阻塞,则会导致截然不同的结果。1例如,这包括由于 NFS 服务器故障或介质速度慢(例如 USB 1.x 存储设备)而导致的进程阻塞。这种情况可能会导致平均负载升高,这并不能反映 CPU 使用率的实际增加(但仍能让人了解用户需要等待多长时间)。
答案2
您提供的最重要的信息并不一定意味着超载:
- CPU 空闲 35%
- 平均负载不一定太大(取决于服务器的预期用途)
- 缺少 RAM 和交换信息
或者更确切地说,如果您所说的超载是指达到某些限制,那么它可能有各个方面:CPU 限制、网络和/或磁盘 I/O 限制、内存使用限制等。
您不应该尝试匹配各种 CPU 负载/使用情况视图 - 它们通常意味着不同的事情,并且视图也是在不同的时间戳收集的(统计信息收集不是原子的):
- 平均负载意味着正在运行队列中的作业数,而不是 CPU 使用率:https://stackoverflow.com/questions/21617500/understanding-load-average-vs-cpu-usage
- 由于各种原因,进程上下文中的 CPU %使用率数字不必加起来等于 100%,以下仅列举其中几点:
- CPU 不会将所有周期都花在进程空间中
- 在进程上下文中花费的各种周期在总体 CPU % 使用率线上的计数方式不同(同一进程在统计间隔内可能处于运行或等待 I/O 状态,从而导致总体 CPU % 使用率线上的 %us 和 %wa 数字)
- CPU 可能在不再运行的进程上花费了周期,这些将计入总体 CPU % 使用率行中,但不会出现在任何进程行中
答案3
Peter 是对的。但这并没有回答你的问题。给它 12 个逻辑 CPU,这样负载就会低于 CPU 数量。这样,没有进程或线程需要等待额外的 CPU 周期来获得执行时间。
在顶部也打开线程视图。
我怀疑那里有一些多线程进程。
11% 系统时间可能表明存在网络瓶颈。