理解“top”命令中的CPU使用率

28

一个4-CPU的服务器上,如果某个进程的CPU使用率为350%,这究竟意味着什么?该进程是'mysqld',目前正在受到模拟OLTP场景的“轰炸”。

欢迎提供任何指针。


1
这个问题应该移动到 ServerFault 上,不是吗? - Luis Filipe
6个回答

41

在 UNIX 系统中,100% 的 CPU 使用率是指一个单个 CPU 的 100%。

对于多核处理器来说,这与真正的多处理器计算机一样。

因此,你正在使用 MySQL 上总 CPU 循环的 7/8。


1
除非他有多线程核心,因为它们显示为单独的核心。我在一台具有双6核Xeon处理器的服务器上工作,它显示为24个核心,但实际上只有12个物理核心。 - bafromca

31

在运行 top 命令时,按下“1”键。这将切换视图,让你可以看到每个核心/ CPU 的负载情况。


19

我昨天刚读了一篇关于这个主题非常有趣的文章:Unix平均负载。它将解释所有你需要知道的内容以及更多信息。

摘录:

平均负载是运行队列长度和当前在CPU上运行的作业数之和。在Solaris 2.0和2.2中,平均负载不包括正在运行的任务,但是在Solaris 2.3中修复了这个错误。

需要考虑两种基本模式来显示负载:“IRIX模式”和“Solaris模式”。在IRIX模式(Linux默认情况下),平均负载为1表示一个CPU已经满载(或者在4个CPU系统上每个CPU的25%等)。在Solaris模式下,平均负载为1表示所有 CPU都已经满载(因此实际上等同于“IRIX模式”负载除以CPU数)。


1
那是一个非常酷且富有信息量的链接!谢谢! - user59634

6
Load average用于显示有多少进程正在等待队列(根据CPU数量进行调整)。对于一个CPU,1.0的负载平均值意味着该CPU能够最佳地处理队列中的所有请求 - 没有进程在等待CPU,也没有浪费CPU周期(即空闲)。单核系统上的2.0的负载平均值将意味着一半的进程将等待机会在CPU上运行。0.33的负载平均值意味着系统上的负载非常小,以至于CPU基本上只是等待更多进程运行的2/3时间。
top显示的CPU百分比是衡量单个进程在一段时间内由内核加载到CPU上运行的频率的指标。因此,在4核系统上的350%表示,在一段时间内,mysqld将占用三个完整的CPU和第四个CPU的一半时间 - 即它具有许多要运行的线程,几乎会淹没4个核心的请求。 CPU百分比实际上并不考虑等待队列(而负载平均值则考虑):它是一种事后统计特定时间段内发生了什么的统计数据。但它确实显示了最近使用CPU的进程。

同一主题的另一篇详尽文章:http://www.linuxjournal.com/article/9001


4

有4个100%,因此在4个CPU的计算机上,“top”显示总共400%。


3
每个 CPU 进程被视为 100%。因此,4 个 CPU 的总计是 400%。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接