如何在容器中实现处理器亲和性?

bar*_*mac 6 cloud docker containers coreos kubernetes

我看到使用 kubernetes 可以为某些工作负载设置节点关联。我想知道在各种容器技术(例如 docker、rocket 等)中是否有任何设施可以让您将进程固定到核心?或者这在多租户环境中是否可行?也许这意味着裸机设置?

Ija*_*han 6

如果您的系统支持具有多个物理 CPU、CPU 内核和逻辑 CPU 的某种组合的 SMP(对称多处理),您可以将 Docker 容器分配给特定的 CPU 资源。

CPU 与 Docker 容器关联的示例命令

此处显示的示例涵盖了使用 docker run 命令创建容器时将 mycontainer Docker 容器分配给特定 CPU 资源的过程。运行命令时,您必须替换 Docker 容器名称和 CPU 组件编号以适合您的环境。

此命令会将 mycontainer Docker Container 分配给第一个 CPU (CPU0):

# docker run --cpuset 0 /bin/bash mycontainer
Run Code Online (Sandbox Code Playgroud)

可以指定多个 CPU。此命令会将 mycontainer Docker Container 分配给 CPU 0 和 1:

# docker run --cpuset 0,1 /bin/bash mycontainer
Run Code Online (Sandbox Code Playgroud)

可以指定一系列 CPU。此命令会将 mycontainer Docker Container 分配给 CPU 0、1 和 2:

# docker run --cpuset 0-2 /bin/bash mycontainer
Run Code Online (Sandbox Code Playgroud)