服务器:Poweredge r620
操作系统:RHEL 6.4
内核:2.6.32-358.18.1.el6.x86_64
我在生产环境中遇到应用程序警报。关键的 CPU 饥饿进程正在缺乏资源并导致处理积压。最近部署的集群中的所有第 12 代戴尔服务器 (r620s) 上都出现了该问题。据我所知,发生这种情况的实例正与峰值 CPU 利用率相匹配,并伴随着大量的“功率限制通知”垃圾邮件dmesg
。这些事件之一的摘录:
Nov 7 10:15:15 someserver [.crit] CPU12: Core power limit notification (total events = 14)
Nov 7 10:15:15 someserver [.crit] CPU0: Core power limit notification (total events = 14)
Nov 7 10:15:15 someserver [.crit] CPU6: Core power limit notification (total events = 14)
Nov 7 10:15:15 someserver [.crit] CPU14: Core power limit notification (total events = 14)
Nov 7 10:15:15 someserver [.crit] CPU18: Core power limit notification (total events = 14)
Nov 7 10:15:15 someserver [.crit] CPU2: Core power limit notification (total events = 14)
Nov 7 10:15:15 someserver [.crit] CPU4: Core power limit notification (total events = 14)
Nov 7 10:15:15 someserver [.crit] CPU16: Core power limit notification (total events = 14)
Nov 7 10:15:15 someserver [.crit] CPU0: Package power limit notification (total events = 11)
Nov 7 10:15:15 someserver [.crit] CPU6: Package power limit notification (total events = 13)
Nov 7 10:15:15 someserver [.crit] CPU14: Package power limit notification (total events = 14)
Nov 7 10:15:15 someserver [.crit] CPU18: Package power limit notification (total events = 14)
Nov 7 10:15:15 someserver [.crit] CPU20: Core power limit notification (total events = 14)
Nov 7 10:15:15 someserver [.crit] CPU8: Core power limit notification (total events = 14)
Nov 7 10:15:15 someserver [.crit] CPU2: Package power limit notification (total events = 12)
Nov 7 10:15:15 someserver [.crit] CPU10: Core power limit notification (total events = 14)
Nov 7 10:15:15 someserver [.crit] CPU22: Core power limit notification (total events = 14)
Nov 7 10:15:15 someserver [.crit] CPU4: Package power limit notification (total events = 14)
Nov 7 10:15:15 someserver [.crit] CPU16: Package power limit notification (total events = 13)
Nov 7 10:15:15 someserver [.crit] CPU20: Package power limit notification (total events = 14)
Nov 7 10:15:15 someserver [.crit] CPU8: Package power limit notification (total events = 14)
Nov 7 10:15:15 someserver [.crit] CPU10: Package power limit notification (total events = 14)
Nov 7 10:15:15 someserver [.crit] CPU22: Package power limit notification (total events = 14)
Nov 7 10:15:15 someserver [.crit] CPU15: Core power limit notification (total events = 369)
Nov 7 10:15:15 someserver [.crit] CPU3: Core power limit notification (total events = 369)
Nov 7 10:15:15 someserver [.crit] CPU1: Core power limit notification (total events = 369)
Nov 7 10:15:15 someserver [.crit] CPU5: Core power limit notification (total events = 369)
Nov 7 10:15:15 someserver [.crit] CPU17: Core power limit notification (total events = 369)
Nov 7 10:15:15 someserver [.crit] CPU13: Core power limit notification (total events = 369)
Nov 7 10:15:15 someserver [.crit] CPU15: Package power limit notification (total events = 375)
Nov 7 10:15:15 someserver [.crit] CPU3: Package power limit notification (total events = 374)
Nov 7 10:15:15 someserver [.crit] CPU1: Package power limit notification (total events = 376)
Nov 7 10:15:15 someserver [.crit] CPU5: Package power limit notification (total events = 376)
Nov 7 10:15:15 someserver [.crit] CPU7: Core power limit notification (total events = 369)
Nov 7 10:15:15 someserver [.crit] CPU19: Core power limit notification (total events = 369)
Nov 7 10:15:15 someserver [.crit] CPU17: Package power limit notification (total events = 377)
Nov 7 10:15:15 someserver [.crit] CPU9: Core power limit notification (total events = 369)
Nov 7 10:15:15 someserver [.crit] CPU21: Core power limit notification (total events = 369)
Nov 7 10:15:15 someserver [.crit] CPU23: Core power limit notification (total events = 369)
Nov 7 10:15:15 someserver [.crit] CPU11: Core power limit notification (total events = 369)
Nov 7 10:15:15 someserver [.crit] CPU13: Package power limit notification (total events = 376)
Nov 7 10:15:15 someserver [.crit] CPU7: Package power limit notification (total events = 375)
Nov 7 10:15:15 someserver [.crit] CPU19: Package power limit notification (total events = 375)
Nov 7 10:15:15 someserver [.crit] CPU9: Package power limit notification (total events = 374)
Nov 7 10:15:15 someserver [.crit] CPU21: Package power limit notification (total events = 375)
Nov 7 10:15:15 someserver [.crit] CPU23: Package power limit notification (total events = 374)
一点 Google Fu 透露,这通常与 CPU 过热或电压调节启动有关。但我不认为这是正在发生的事情。集群中所有服务器的温度传感器运行良好,iDRAC 中禁用了功率上限策略,并且我的系统配置文件在所有这些服务器上设置为“性能”:
# omreport chassis biossetup | grep -A10 'System Profile'
System Profile Settings
------------------------------------------
System Profile : Performance
CPU Power Management : Maximum Performance
Memory Frequency : Maximum Performance
Turbo Boost : Enabled
C1E : Disabled
C States : Disabled
Monitor/Mwait : Enabled
Memory Patrol Scrub : Standard
Memory Refresh Rate : 1x
Memory Operating Voltage : Auto
Collaborative CPU Performance Control : Disabled
- 戴尔邮件列表帖子几乎完美地描述了这些症状。戴尔建议作者尝试使用性能配置文件,但这没有帮助。他最终应用了戴尔指南中的一些设置来为低延迟环境配置服务器,其中一个设置(或其组合)似乎已经解决了这个问题。
- Kernel.org 错误 #36182指出默认情况下启用了功率限制中断调试,这会在 CPU 电压调节启动的情况下导致性能下降。
- 一篇 RHN 知识库文章(需要 RHN 登录)提到了一个影响未运行性能配置文件的 PE r620 和 r720 服务器的问题,并建议对两周前发布的内核进行更新。...除了我们正在运行性能配置文件...
我在网上能找到的一切都让我在这里转圈。到底是怎么回事?
导致性能问题的不是电压调节,而是由它触发的调试内核中断。
尽管 Redhat 有一些错误信息,但所有链接页面都指的是同一现象。无论有没有性能配置文件,电压调节都会发生,这可能是由于启用了涡轮增压功能。不管出于何种原因,这些电压波动与内核 2.6.32-358.18.1.el6.x86_64 中默认启用的功率限制内核中断的交互作用很差。
确认的解决方法:
grub.conf
将禁用 PLN:clearcpuid=229
片状解决方法:
不好的解决方法: