我试图了解我的 Debian 系统中的平均负载。我已经阅读了对显示值的一些解释,并且我了解到这个数字代表我的系统“过载”的程度。因此,0.5 的平均负载意味着我的系统可以计算两倍,而无需任何额外的延迟。平均负载为 2 意味着我的系统可以处理大约一半的负载。
我读过负载平均数应该除以系统中的处理器数。因此,2-CPU 系统上 2 的平均负载等于单 CPU 系统上 1 的平均负载。正确的?
但现在困境来了。多核系统怎么样?在这个问题上似乎存在很大的争议。大多数关于它的旧信息表明内核数不等于处理器数,因此 8 核系统上的平均负载不除以内核数。也有很多较新的文章说,核心数大致对应于CPU的数量,所以负载平均值应该除以核心数。
什么信息是对的?
我可能会用这个来回答我自己的问题,因为我附上了我的系统的屏幕截图,它有 8 个内核,其中只有一个是 100% 使用的——我的平均负载是 1.02。因此,这看起来应该将负载平均值除以内核数,以获得有关系统负载的相关信息。我对吗?
一般是的。在 Linux 系统上,CPU 和/或内核的负载平均计数类似。
当您在虚拟环境和/或英特尔® 超线程“内核”中运行时,可能会出现一些混乱,例如“虚拟内核”。基本上,Linux 会计算每组采样时间活动任务需要多少滴答声。因此,只要您有更多的“虚拟核心”,活动任务就会被并行处理。但由于这些不是真正的核心,一旦您拥有比真正的物理核心和/或 CPU 更多的活动任务,您可能会遇到不平衡的负载平均值。
平均负载与正在运行或等待运行的任务数成正比。它不会传达消耗的 CPU 周期数,也不会传达您拥有的 CPU 数量。也不是您的应用程序的实际响应时间。
将平均负载保持在 CPU 数量以下的简单规则很有用,但并不总是适用。一些实际系统的每个 CPU 的平均负载比率高于 5 并且性能良好,但这种情况很少见。
在实践中,将平均负载测量为许多性能计数器之一。最重要的是,指标对提供给最终用户的服务有用。Web 服务器响应时间。数据库查询量。了解情况良好以及用户抱怨时的数字。