答案1
这不是“CPU”列显示的内容。来自man top
:
Line 2 shows CPU state percentages based on the interval since the last refresh. As a default, percentages for these individual categories are displayed. Where two labels are shown below, those for more recent kernel versions are shown first. us, user : time running un-niced user processes sy, system : time running kernel processes ni, nice : time running niced user processes id, idle : time spent in the kernel idle handler wa, IO-wait : time waiting for I/O completion hi : time spent servicing hardware interrupts si : time spent servicing software interrupts st : time stolen from this vm by the hypervisor
因此,当您看到 98.8% 时,这并不意味着 98.8% 的可用 CPU 功率。它告诉您时间自上次top
轮询系统以来,CPU 在每个类别中所花费的时间。默认情况下,top
每 2 秒轮询一次系统。因此,您的行告诉您,您的 CPU 在过去 2 秒的大部分时间处于空闲状态。
我在这里发布了有关其工作原理的更详细描述top
:https://superuser.com/a/575330/151431。
答案2
根据我的(非常基本的)理解,标题中的 CPU 消耗是总 CPU(所有 CPU/核心)的百分比,而%CPU
表中的(默认)是每个 CPU/核心的百分比。
这意味着表中百分比的总和除以系统中的 CPU/核心数量应该大致与标题中的 CPU 消耗相匹配。
此外,手册页状态:
1. %CPU -- CPU Usage The task's share of the elapsed CPU time since the last screen update, expressed as a percentage of total CPU time. In a true SMP environment, if a process is multi-threaded and top is not operating in Threads mode, amounts greater than 100% may be reported. You toggle Threads mode with the `H' interactive command. Also for multi-processor environments, if Irix mode is Off, top will operate in Solaris mode where a task's cpu usage will be divided by the total number of CPUs. You toggle Irix/Solaris modes with the `I' interactive command.
您可以在最后一段中看到,如果按I
( Shift+ i),则会切换到一种模式,其中每个进程的 CPU 时间除以 CPU/核心的数量。在此模式下,表格的总数应与标题中的数字相匹配。
来自我自己的 4 核系统的示例
Irix 模式在(默认)- 表中的总数大约是标题中总数的 4 倍。
Irix 模式离开(Solaris 模式)- 表中的总和与标题中的总和大致相同。
另外,请参阅@terdon 的回答,了解为什么数字不完全相同 - 并添加分数的四舍五入等。
在批处理操作中禁用 Irix 模式
要在批处理操作中禁用 Irix 模式,请执行以下操作:
top
以正常模式运行- 使用以下方式禁用 Irix 模式:Shift+i
- 保存当前用户的配置文件:Shift+w
配置文件位于$HOME/.config/procps
现在,当您为该用户运行 top(包括批处理模式)时,Irix 模式将被禁用。
要使其成为root
用户的默认设置,请切换到 root(使用sudo -s
)并运行上述 3 个步骤。
由于 top 是一个相对简单的程序,因此无法使用自定义配置文件运行。如果您需要自定义配置或 CPU 指标,请考虑使用 top 输出以外的其他方法。