![多核服务器的良好代表性 CPU 使用率分数?](https://linux22.com/image/706986/%E5%A4%9A%E6%A0%B8%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%9A%84%E8%89%AF%E5%A5%BD%E4%BB%A3%E8%A1%A8%E6%80%A7%20CPU%20%E4%BD%BF%E7%94%A8%E7%8E%87%E5%88%86%E6%95%B0%EF%BC%9F.png)
我正在尝试简化我们现有的监控系统。
它具有多种查看服务器 CPU 使用率的视图,包括:
平均 CPU 使用率(总体而言,涵盖所有核心)。
低核心占用率和高核心占用率(在给定时间内使用的核心数量超过 20% 或 70%)
我们还对每个核心的使用情况有具体的指标。
核心占用率很有用,因为您可能有 4 个核心,1 个核心占用 100%,3 个核心占用 0%。在这种情况下,您可以减少到 1 个或 2 个核心而不会影响您的工作负载,而平均 CPU 使用率只会显示 25%(无用)。
保留所有这些单独的指标非常繁重,因为我们有数千台服务器每分钟多次报告指标。
是否有一种标准的方法来衡量 CPU 使用率,既考虑总功率,又考虑使用的核心数(您并行工作的程度如何)?
编辑:在设计实际系统方面,我们收到了一些非常棒/有用的回复。但让我们关注一下一般问题:“如何评分/制作一组或一小组指标来表示计算机对其 CPU 资源的使用情况(包括其使用并行性)?”。
答案1
测量 CPU 的空闲时间并不是衡量性能或容量的好方法。高 CPU 使用率可能表明更多的 CPU 可以使服务运行得更快,但更好的指标是平均负载。首先,这将告诉您是否有工作正在等待处理但卡在运行队列中等待时间片,此外,在 Linux(和一些其他操作系统)上,当有大量任务等待运行(当平均负载大于 CPU 数量时,就会有积压任务)时,调度程序将开始抢占任务。当操作系统尝试完成 tssk 并将其从运行队列中移除时,这种上下文切换的注入会导致吞吐量下降。
您对 1 个核心 100% 运行和 3 个核心闲置的描述可能有很多故事可以解释,也有很多解决方案可以更有效地利用您的“数千台服务器”。您需要深入挖掘才能确定这是配置问题、应用程序缺乏任务分片、irq 分配不佳还是其他几个原因。
答案2
总是有一个 LA 服务于完全相同的目的。LA(平均负载)本身显示了上次检查时准备运行的进程数。这使得 LA 有点难以理解,但也使 LA 非常有助于检测错误的服务器利用率或潜在的改进空间。
低 LA 告诉我们服务器在当前负载下运行良好,因此即使 100% 的 CPU 使用率也不会成为问题,因为它响应迅速且速度快。
高 LA 表示服务器负载过重或无法处理当前任务,因此即使 5% 的 CPU 使用率也可能让人感觉服务器完全卡住了并且没有响应。这种情况可能发生在各种情况下,例如等待磁盘数据(磁盘过载)、太多数据跨越内核边界(编码不良/有待改进)、CPU 行为不良(硬件问题)等等。
低 LA 和高 LA 之间的差额是虚构的,并且可能因操作系统的不同而略有不同。以前,Linux 在 LA 20 上表现相当糟糕,而 BSD 可以达到 100 而不会产生严重影响。今天这种情况可能已经发生了很大变化。