AMD CPU c-state
ADM Ryzon处理器随机"冻结"问题
AMD Ryzon处理器似乎在 c-states
电源管理上存在缺陷,可能会在低负载时随机"冻结"。这个问题绕过低方法是在内核参数添加:
processor.max_cstate=1
此外,一些系统中内核可以覆盖BIOS设置(见 ACPI cpufreq BIOS有一种设置 Power Regulator = OS Control Mode
表示操作系统可以决定电源管理 ),此时就需要再加上一个 intel_idle.max_cstate=0
来确保不进入睡眠状态。否则执行 cat /sys/module/intel_idle/parameters/max_cstate
会看到数值是 9
,这样就存在逻辑上冲突(感觉AMD这块有BUG)
所以,我实际配置:
processor.max_cstate=1 intel_idle.max_cstate=0
重启服务器后检查:
$cat /sys/module/intel_idle/parameters/max_cstate
0
也即是(对于intel处理)强制不进入 CPU c-state 的节能状态,这个措施对于配置了允许OS控制BIOS的电源管理(见 ACPI cpufreq )是有效的,实践验证,对这种BIOS配置的AMD处理器也需要这样处理。
备注
上述问题我是在国产化海光处理器上发现,该处理器是 AMD Zen微架构 微架构,应该也存在这样的缺陷。最好的解决方案可能还是在BIOS中关闭Power Manager,这样就不会出现上述冲突。