可以使用 taskset 或 systemd CPUAffinity=0 将 dockerd 和 containerd 固定到核心 0

It is possible to pin dockerd and containerd to core 0 using taskset or systemd CPUAffinity=0

我正在尝试查看是否可以将 dockerd 和 containerd 固定到 Linux 服务器上的核心 0,而将所有其他核心留给容器(使用 cpuset)。所以我在我的 systemd 单元上使用了它:

[Service]
CPUAffinity=0

我注意到子进程也被固定到核心 0(任务手册解释这是预期的行为):

grep -i cpu /proc/$PID/status


我的问题是:

  1. 可以只固定父进程,但子进程可以 运行 通过使用 cpuset
  2. 有人在做这个吗?我担心的是,我想让一些敏感进程不间断地工作,方法是将中断和其他进程绑定到核心 0

谢谢,

systemd 单元上的

taskset、numactl 和 'CPUAffinity' 将(如预期的那样)使分叉进程固定到特定的 CPU。我找不到 Docker 在等待容器执行时浪费资源的证据,所以暂时我会让它 运行 取消固定。

如果有人给出了更好的答案,很高兴重新打开这个问题。