top - 18:22:21 up 98 days, 23:26, 4 users, load average: 2.73, 2.85, 2.60
Tasks: 210 total, 1 running, 209 sleeping, 0 stopped, 0 zombie
Cpu(s): 3.6%us, 2.5%sy, 0.0%ni, 87.7%id, 5.1%wa, 0.0%hi, 1.1%si, 0.0%st
Mem: 15067172k total, 8230892k used, 6836280k free, 1729472k buffers
Swap: 1952764k total, 0k used, 1952764k free, 1947068k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
29512 root 20 0 6372m 3.0g 10m S 99 21.1 35:33.11 java
4086 mysql 20 0 1692m 433m 7948 S 11 2.9 48:22.74 mysqld
为什么在一台空闲率为 87% 的机器上会出现 2 < 平均负载 < 3 的情况?
此外,java 和 mysql 进程总是占用 > 100% 的 CPU。
因此,有一个空闲指标(87.7%)和另外两个活动指标(平均负载和 CPU%)。为什么呢?
PS. 这是一个 8 核 CPU(或者 2 个四核 CPU,记不清了),并且这个 Linux 在某些虚拟化环境中运行。
答案1
top
多核机器上的输出令人困惑。100% 代表完全使用单身的CPU。任何可占用多个内核的多线程进程都将显示为以 >100% 的速度运行。就您而言,由于您有 8 个内核,因此您可能会看到高达 800% 的使用率。
按下1将top
显示按核心划分的 CPU 使用情况。
平均负载是过去 1、5 和 15 分钟的平均负载。它按核心缩放。对于 8 核机器,平均负载小于 8 表示未充分利用。
对于 top 指示的使用量来说,2 到 3 之间的负载大约是正确的,而且在 8 核机器上肯定不用担心。