我们有一个包含物理机器 HW 的集群
每台机器有 32 个 CPU
# lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 32
On-line CPU(s) list: 0-31
Thread(s) per core: 2
Core(s) per socket: 8
现在我们希望每次从正常运行时间到正常运行时间 5 分钟的平均负载达到阈值时发送警报
据我了解,当平均负载(正常运行 5 分钟后)值超过 32(CPU 数量)时,我们就需要担心了。
我对么 ?
答案1
平均负载主要不是显示 CPU 负载,而是工作项队列长度的近似值。在现实生活中,这通常更多地受到 I/O 等待中浪费的 CPU 周期的影响,而不是实际使用的 CPU 周期(当然这取决于工作负载)。
查看该top
工具以确定 CPU 如何使用它们的时间。根据经验法则(和仅有的因此)考虑
- 高
User
百分比是健康的 - 您的机器使用良好 - 高
Sys
百分比可能表明应用程序效率不高(或 VM 客户机运行未优化的操作系统/驱动程序组合) - 时间过长
Wait
意味着您的 I/O(最有可能是存储)无法跟上。这可能再次表明您的应用程序内部需要优化,或者只是对存储硬件的要求过高(最值得关注的地方:旋转磁盘是否用于延迟敏感的工作负载?您是否使用 RAID5 进行小规模写入?)