Docker 支持 cgroup v2 的 cpu.weight 旋钮吗?

问题描述 投票:0回答:1

当 docker 容器在 v1 中运行时,我们只需在运行命令中传递

--cpu-shares
值,众所周知,在 cgroup v2 中,我们没有
cpu.shares
旋钮可用,它被替换为
cpu.weight

在 cgroup v1 中,

cpu.shares
的默认值为 1024,对于 docker 交换机
--cpu-shares
来说也是如此,到目前为止,我认为它们都是相等的。

现在,在 cgroup v2 中,

cpu.shares
已替换为
cpu.weight
cpu.weight
的默认值为 100000。

我的问题:运行 docker 容器时如何通过

cpu.weight
?甚至支持吗?如果是这样,我们如何有效地将
cpu.weight
等同于
--cpu-shares

附注我是 Docker 和容器化技术的新手,所以请原谅我在描述中犯的任何基本错误。

docker linux-kernel cpu-usage cgroups
1个回答
0
投票

TL;DR:将

--cpu-shares
[2, 262144]
范围内的值一起使用,就像使用 cgroup v1 一样。任何理智的 OCI 运行时实现都会为您进行从 v1
cpu.shares
到 v2
cpu.weight
的正确值转换。


OCI 运行时规范是根据 cgroups v1 编写的,因此没有明确定义在这种情况下 cgroups v2 应该发生什么。然而,正常的 OCI 运行时实现应该能够轻松地从范围为

cpu.shares
的 v1
[2, 262144]
转换为范围为
cpu.weight
的 v2
[1, 10000]
。转换很简单:

cpu.weight = (1 + ((cpu.shares - 2) * 9999) / 262142)

据我所知,此处列出的大多数容器 OCI 运行时实现都是这样做的。只需在源代码中查找神奇值262142

即可轻松检查。

如果您使用的是 Linux 并按照 Docker 文档中的

安装说明安装了 Docker,那么您正在使用 opencontainers/runc

这是一个快速参考列表:

© www.soinside.com 2019 - 2024. All rights reserved.