从cgroup v1 CPU Shares到cgroup v2 CPU权重的新转换

从cgroup v1 CPU Shares到cgroup v2 CPU权重的新转换

💡 原文英文,约1000词,阅读约需4分钟。
📝

内容提要

Kubernetes改进了cgroup v1到cgroup v2的CPU权重公式,解决了CPU优先级分配问题,提升了优先级和粒度,使请求1 CPU的容器获得接近默认值的权重,改善资源分配。此变更需OCI运行时支持,建议在非生产环境中测试。

🎯

关键要点

  • Kubernetes改进了从cgroup v1到cgroup v2的CPU权重转换公式。
  • 新公式解决了Kubernetes工作负载的CPU优先级分配问题。
  • cgroup v1的CPU shares与cgroup v2的CPU weight之间的映射公式已更新。
  • 旧公式导致Kubernetes工作负载在CPU优先级上低于非Kubernetes进程。
  • 新公式提供了更好的优先级对齐和更细粒度的资源分配。
  • 此变更需OCI运行时支持,建议在非生产环境中测试。
  • 新公式的实现依赖于OCI层,而非Kubernetes本身。
  • 某些现有部署可能会受到旧公式假设的影响,需要更新相关工具。
  • Kubernetes项目建议在升级OCI运行时之前进行兼容性测试。

延伸问答

Kubernetes如何改进cgroup v1到cgroup v2的CPU权重转换?

Kubernetes改进了CPU权重转换公式,解决了CPU优先级分配问题,提升了优先级和粒度,使请求1 CPU的容器获得接近默认值的权重。

cgroup v1和cgroup v2之间的CPU权重映射公式是什么?

新的映射公式为:cpu.weight = ⌈10^(L²/612 + 125L/612 - 7/34)⌉,其中L = log₂(cpu.shares)。

旧的CPU权重转换公式存在哪些问题?

旧公式导致Kubernetes工作负载在CPU优先级上低于非Kubernetes进程,并且在小CPU请求时粒度不够,难以管理。

新的CPU权重转换公式如何解决优先级对齐问题?

新的公式使请求1 CPU的容器获得cpu.weight = 102,接近cgroup v2的默认值100,从而恢复了Kubernetes工作负载与系统进程之间的优先级关系。

在使用新公式时,现有部署可能会受到什么影响?

一些应用或监控工具可能需要更新,以适应新的二次转换公式,特别是那些基于旧公式计算CPU权重的工具。

Kubernetes项目对新转换公式的测试建议是什么?

Kubernetes项目建议在升级OCI运行时之前,在非生产环境中测试新转换公式,以确保与现有工具的兼容性。

➡️

继续阅读