首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >4核8线程处理器系统负载的正确解释方法

4核8线程处理器系统负载的正确解释方法
EN

Server Fault用户
提问于 2014-08-05 15:09:20
回答 5查看 20.1K关注 0票数 15

众所周知,单处理器上的负载为1.00意味着有100%的负载。类似地,四核上的4.00负载将是100%。

如何解释4核心8线程处理器上的负载?什么时候才能达到CPU的最大容量?4点还是8点?

EN

回答 5

Server Fault用户

回答已采纳

发布于 2014-08-05 15:20:45

不一定,但主要是在1.00*n_cpu上。

加载意味着:如果一个单cpu系统上有多个进程,它们似乎是并行运行的。但这不是真的。实际情况:内核给进程以1/100秒的时间,然后中断它的运行。并给出另一个进程的下一个1/100秒。

实际上,“哪个进程应该有下一个1/100秒的间隔?”这个问题将由一个复杂的启发式方法来决定。它被命名为任务调度。

当然,被阻塞的进程(例如,它们正在等待从磁盘中读取的数据)不受此任务调度的限制。

load说:目前有多少进程在等待下一个1/100秒的时间帧。当然,这是一个平均值。这是因为您可以在一个cat /proc/loadavg中看到多个数字。

多cpu系统的情况要复杂一些.有多个cpus,其时间框架可以给出多个进程。这使得任务调度稍微有点复杂,但不太复杂。但情况是一样的。

内核是智能的,它试图共享系统资源以获得最佳的效率,而它就在这一点附近(有一些小的优化问题,例如,由于缓存考虑,如果进程在同一个cpu上运行的时间最长,则会更好,但它们并不重要)。这是因为如果我们有load 8,这意味着:实际上有8个进程在等待它们的下一个时间切片。如果我们有8个cpus,我们可以将这些时间片一对一地分配给cpus,这样我们的系统就会得到最优的使用。

如果您看到一个top,您可以看到实际运行的进程数量非常少:它们是由R标记的进程。即使在一个并不是真正的硬核系统中,它也常常低于5。这部分是因为等待来自磁盘或网络的数据的进程也被挂起(顶部标记为S )。加载只显示cpu的使用情况。

还有一些测量磁盘负载的工具,imho至少应该和cpu使用情况监控一样重要,但在我们专业的sysadmin世界中,它不知何故并不那么出名。

Windows工具通常将负载与cpus的实际数量分开。这导致一些专业的windows系统管理员在这种按cpu划分的意义上使用系统负载.当你向他们解释这件事后,他们可能会更快乐。

多核CPU实际上是同一个硅片上的多个CPU。没有什么不同。

对于超线程cpu,有一个有趣的副作用:加载cpu会使其超线程对变慢。但是这发生在一个更深的层次上,正常的任务调度处理,虽然它可以(并且应该)影响调度程序的进程移动决策。

但从我们目前的观点来看--是什么决定了系统的负载--这也不重要。

票数 17
EN

Server Fault用户

发布于 2014-08-05 15:51:55

由于超线程实际上不是第二个核心,所以它永远不会将内核取到200%,但是对于某些工作负载,它将花费超过100%的时间。

所以您的最大负载在大约4到6之间是未知的。

(当然,当重载时,这个值会更高,因为它实际上计算了可运行的进程,特别是当它们在等待IO时)

票数 5
EN

Server Fault用户

发布于 2014-08-06 14:27:19

平均负荷并不意味着你认为它意味着什么。这不是关于即时CPU的使用,而是有多少进程在等待运行。通常情况下,这是因为有很多东西需要CPU,但并不总是如此。常见的罪魁祸首是等待IO磁盘或网络的进程。

尝试运行ps -e v并查找进程状态标志。

代码语言:javascript
复制
state    The state is given by a sequence of characters, for example, "RWNA". The      first character indicates the run state of the process:
D    Marks a process in disk (or other short term, uninterruptible) wait.
I    Marks a process that is idle (sleeping for longer than about 20 seconds).  
L    Marks a process that is waiting to acquire a lock.
R    Marks a runnable process.
S    Marks a process that is sleeping for less than about 20 seconds.
T    Marks a stopped process.
W    Marks an idle interrupt thread.
Z    Marks a dead process (a "zombie").

这是来自ps手册,所以您可以在这里找到更多的细节-- RD流程可能特别有趣。

由于各种各样的原因,你最终会得到平均负载的“尖峰”,所以除了“这个系统是否繁忙”之外,它们并不是一个很好的衡量标准。在将平均负载映射到CPU内核的过程中陷入困境不会对您有任何好处。

票数 5
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/618130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档