容器的资源隔离技术

Posted by [Kohn] on Monday, February 26, 2024 本文阅读量

1 背景

2 CPU资源隔离

GroupIdentity

AliOS Group Identity通过为不同的cgroup配置优先级, 确保优先级高的CPU能够有限分配到CPU使用权

https://help.aliyun.com/zh/alinux/user-guide/group-identity-feature#task-2129392

cgroup

3 内存隔离

  • memory.high: 当 memory cgroup 内进程的内存使用量超过了该值后就会立 即触发memcg reclaim进行直接的内存回收。
  • memory.low: 当容器内进程的内存使用量在这个水线以下时,内核会 Best-effort memory protection,也就是说在内核进行内存回收的时候就会 先去回收不属于该 memory cgroup 的 Page Cache,等到其他容器的 Page Cache 被回收掉后如果回收的内存还不够,再来回收这些 Page Cache。
  • memory.min: 当容器内进程的内存使用量低于该值时,在系统进行内存回收 的时候即使其他容器内的 Page Cache 都被回收完了也不会去回收这些 Page Cache,可以理解为这个水线下的内存是禁止被回收的。

通过为低优的pod配置较低的memory.high, 可以优先回收低优pod的内存 为高优pod配置较高的memory.low和memory.min, 可以是的高优pod最后被回收, 从而保证了高优pod的QoS