OceanBase V4 中基于 cgroup 的 CPU 资源隔离是如何实现的?
cgroup 是 Linux 内核提供的资源控制机制,OceanBase V4.0 起支持通过 cgroup 对 CPU 进行强隔离 。
实现机制:
- 将不同租户的工作线程和后台线程分配到不同的 cgroup 目录中,严格限制每个租户的 CPU 使用率。
- 多个租户同时负载上升时,cgroup 按权重(weight)分配 CPU 时间片。
- 后台线程也按租户拆分并放入不同 cgroup,实现租户间及租户内前后台线程的隔离。
与 Unit 中 MAX_CPU 的区别: 不开 cgroup 时,MAX_CPU 通过限制活跃线程数实现软隔离;开启 cgroup 后,即使物理 CPU 空闲,租户也无法突破 MAX_CPU 上限,实现硬隔离。
注意事项: 要求 Linux Kernel 4.19 及以上;单租户、小规格租户或租户间有上下游关联的场景不建议开启。