已采纳
回答正文
回复
讨论正文
该问题的正文与回答。
【背景】 我维护一个 14 节点自建集群(K8s 1.28.9,containerd 1.7.13,内核 5.15.0-91,cgroup v2 单层级,节点 32C128G,NVMe SSD)。节点上混跑两类负载:
【现象】 上周二 batch 跑的时候,同节点在线服务 P99 从稳态 45ms 抖到 310ms(持续约 15 分钟,batch 结束后 30s 内恢复)。事后看:
node_cpu_seconds_total 该节点 util 峰值 88%,没打满;container_cpu_cfs_throttled_periods_total 在 batch 期间增量很小(说明「自己」没怎么被 throttle);cpu.stat 的 nr_throttled 因为没设 limit 一直是 0——我没法直接证明是 batch「挤占」了在线,还是在线被自己的 limit 卡住了,只能靠排除法。【已尝试】
cpu.limit=12(留 20% 余量)压了一次:batch 跑完 19 分钟(+5%),在线 P99 抖到 280ms,比不限好但没根治;【期望得到的答案形态】
cpu.max.burst 的实际生效边界(内核 changelog 或你们验证过的版本下限),以及 burst 窗口内对同节点其他 cgroup 的可见影响(是否有实测数据:burst 期间邻居 P99 / 邻居 throttle 率);cpu.stat 字段,以及你们线上用的告警阈值(不是拍脑袋的 80%);希望答案里有真实数字,不接受「我们线上都设了 limit 没问题」这种一句话结论。