容器 39:CPU weight 在竞争下是否才起作用
独立研究要回答一个可以被实际结果推翻的问题,而不是重新打包35 的性能清单。选用 Linux kernel cgroup v2 官方技术文档中 cpu.weight 的语义作原始来源,提出命题:同一父 cgroup 的两个有界计算负载同时争用相同 CPU 集时,改变其相对 weight 会影响所得 CPU 时间份额;若只有一个任务运行且 CPU 足够空闲,改变 weight 不应当被写成“硬配额”。
将文档语义变成可证伪实验
实验前固定专用 Linux VM、内核/cgroup v2 版本、物理或虚拟 CPU 数、cpuset、频率与可用邻居负载,两个探针用同一 bounded_load.py 代码但以较长的有界窗口重复。各组预设至少十次,交叉调换两个子 cgroup 的 weight 与运行顺序,保存 cpu.stat、调度相关计数、每次工作量、总耗时和错误数;以相同父组和相同配额条件比较。另运行“只有一个子组工作”的反例组,排除把权重理解成任何时候都有的硬限速。若 CPU 饱和条件不成立,即使观察不到差异也不能归因于权重规则失效。
实际文件写入只允许在专用 VM 管理员委派的子树,任务每轮有最长时限;退出后确认自建 cgroup 无进程并删除。研究设计、原始表格字段与清理及统一负载源码是研究材料。当前云端是 cgroup v1 只读,实验 NOT_RUN,没有基线数据、重复运行、统计分布或反例结果,故这篇仍是未完成的研究稿件,不能称为“成功复现”。将来的最终结论必须引用原始输出、失败轮次和 VM 环境,而非这里的预测。
| 条件 | 想比较什么 | 如果结果相反先查什么 |
|---|---|---|
| 两组同核竞争 | CPU 时间份额比 | cpuset、额外负载、父组委派 |
| 单组运行 | weight 是否是硬上限 | 是否另有 cpu.max |
| 顺序交换 | 位置/缓存偏差 | 计数窗口与任务身份 |
练习
- 先预测两组 weight 为 100 与 200 且同时饱和时资源份额的定性关系;在独立 VM 用原始计数跨十次检验,而不写死吞吐百分比。
- 预测只有一组运行时把 weight 减半能否令它同样变慢;做负面组实验,再用
cpu.max限额的对照解释两个机制。
上一篇:38:故障恢复;系列主线结束后,选修主题用于说明何时需要不同的隔离或执行模型。
系列总目录:从进程隔离到运行时与编排。
参考资料
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.





