微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何配置 dockerd 不使用某些特定的 CPU?

如何解决如何配置 dockerd 不使用某些特定的 CPU?

全部。

我想为实时任务保留一些 cpu。 我尝试使用 cset 实用程序,(https://github.com/lpechacek/cpuset/blob/master/doc/tutorial.txt) 但由于 dockerd 将所有可用的 cpu 保留给自己的 cpuset,因此失败了。

然后,我在启动 dockerd 之前使用 cset shield --cpus 0-10 命令保留了 cpus 0~11。但它也没有奏效。 cpu屏蔽,dockerd 启动但不能 启动容器:

2021-07-19T17:11:13+09:00 myserver dockerd[59166]: time="2021-07-
19T17:11:13.267579743+09:00" level=error msg="fatal task error"
error="starting container Failed: OCI runtime create Failed:
container_linux.go:367: starting container process caused:
process_linux.go:340: applying cgroup configuration for process caused:
Failed to write \"0-79\\n\": write /sys/fs/cgroup/cpuset/docker/cpuset.cpus:
invalid argument: unkNown" module=node/agent/taskmanager 
node.id=rzeijp8jgedezsli9x4ftjugc service.id=z6cz3jtf6nz4293ye50l23f2o 
task.id=qn9zcc45rvjdk50jyaycri7lg

cset 结果表明 cpuset 发生冲突:

# cset set --list
cset: 
     Name       cpus-X    MEMs-X Tasks Subs Path
 ------------ ---------- - ------- - ----- ---- ----------
     root       0-79 y     0-1 y   696    3 /
   docker      ***** n   ***** n     0    0 /docker
   system      12-79 y       0 n   481    0 /system
     user       0-11 y       0 n     0    0 /user

我想我需要告诉 dockerd 不要为其 cpuset 使用保留的 cpus,但找不到如何使用。

任何意见或建议将不胜感激。

解决方法

我们可以将 dockerd 配置设置为 /etc/docker/daemon.json。 我将docker的父cgroup设置为/system,问题解决了:

# cat /etc/docker/daemon.json 
{
  "cgroup-parent": "/system"
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。