容器 35:性能差异来自隔离层还是实验条件
“容器性能损耗多少”缺少测量对象和实验条件。应用计算、内存申请、文件系统 copy-up、网络封装都在不同路径上。34只评估启动,不把 steady-state 性能一起平均。本篇先设定可以证伪的对照,再决定哪些数字能归因于容器边界。
逐项只改变一个条件
同一内核、架构、节点、二进制和输入,先在普通进程跑 bounded_load 的有界计算/内存路径,再在专用容器内跑同样命令;分别记录用户态时间、CPU/内存控制器、可运行 CPU 集与真实的 cgroup 限制。文件系统实验区分宿主相同盘的普通写入、容器可写层首次写入与同一镜像的重复写入;网络实验区分 loopback、veth、bridge 与跨主机封装,应用请求也要用相同连接/大小分布。每组预设预热、次数、并发、成功与失败计数,报告吞吐与分位数及原始数据,不可只挑最快一轮。
失败或反例是把一个组放在远端存储、另一个组放在本地盘,却将延迟差归因于 OverlayFS;或让一组命中页缓存、另一组做冷读取,还声称 cgroup 导致 I/O 变慢。必须逐项记录存储设备、缓存条件、CPU 亲和性、流量路径、镜像 digest 和安全策略,结果可解释时才写局部结论。实验矩阵与相同负载给出可复跑入口。本环境无运行时、独立双 VM,容器/普通进程对照 NOT_RUN,没有可报告的吞吐、分位数或“通用百分比”。
| 现象 | 控制变量 | 边界 |
|---|---|---|
| CPU 差异大 | cgroup 限额、cpuset/邻居 | 不归因于 namespace 本身 |
| 首次文件写慢 | copy-up 与缓存状态 | 不推广到所有 snapshotter |
| 网络 p99 高 | 路由、封装及失败数 | 不以平均值覆盖失败 |
练习
- 先预测在完全相同 CPU limit 下,普通进程与容器的有界负载耗时应怎样;锁定 cpuset 与并发后重复测量并展示原始数据。
- 预测同一文件第一次写与第二次写的延迟差是否能证明 OverlayFS 固有损耗,增加普通进程/相同存储与缓存对照后再归因。
系列总目录:从进程隔离到运行时与编排。
参考资料
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.





