# cat /proc/acpi/processor/CPU0/power
active state: C0
max_cstate: C8
maximum allowed latency: 2000000000 usec
states:
C1: type[C1] promotion[--] demotion[--] latency[001] usage[08724892] duration[00000000000000000000]
C2: type[C2] promotion[--] demotion[--] latency[041] usage[35992071] duration[00000001375734158075]
我试图了解哪种设置最适合我们的服务器,其中每周有 5 到 6 天连续执行网格作业。
因此,我正在尝试选择优化参数以实现低延迟。
上述输出中的最大允许延迟是什么意思?每个 C 状态的属性(即升级、降级、延迟、使用和持续时间)是什么意思?
除此之外,完全禁用我们环境中的电源管理是否太过分了?
我的意思是,这是连续执行的,平均每台服务器有近 24 个 CPU,每个 CPU 有 12 个核心。由于环境是网格,因此大多数时候 CPU 中的某些核心或某些 CPU 本身可能未被使用(如果作业当时无法从服务器找到所需的资源,包括 RAM)。此外,90% 的情况下,周日不会运行任何作业。
因此,完全禁用电源管理可能太奢侈了。
那么,我该如何使用上述输出并了解从每个状态唤醒需要多少时间。如果达到特定水平不会太多,我认为我们可以将允许的最大 C 状态更改为该数字。至少,我觉得 C8 的 max_cstate 对于工作日来说太多了,可能需要更多时间才能唤醒。
答案1
对于任何需要低延迟或确定性处理/响应时间的事物,标准解决方案是完全禁用 C 状态。
我不知道你使用的是什么类型的服务器,但 HP 有一个不错的低延迟调优指南这可能有助于我们基本了解其背后的思想和决策过程。