You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何限制容器中top命令显示的CPU核心数量?

Docker容器CPU核心数显示问题解决方法

问题原因

docker update --cpus="2"只是通过cgroup限制容器的CPU使用率上限(最多占用2核的计算能力),但不会修改容器内/proc/cpuinfo等系统文件,所以top这类读取该文件的工具会显示宿主机的总核心数;而nproc读取的是sysconf(_SC_NPROCESSORS_ONLN),这个值会受Docker的CPU绑定设置影响,因此能正确返回限制后的核心数。

解决方法

要让top和应用都正确识别到指定的核心数,需要使用核心绑定的方式,而非单纯的使用率限制:

  • 启动容器时指定绑定的核心:

    docker run --cpuset-cpus="0-1" [其他参数] <镜像名>
    

    这里0-1表示绑定宿主机的第0、1号物理核心,容器内的/proc/cpuinfo会只显示这2个核心,top和应用都会识别到2核。

  • 更新已运行的容器:

    docker update --cpuset-cpus="0-1" <容器ID/名称>
    

补充说明

  • 如果仅需限制CPU使用率而不绑定物理核心,--cpus参数足够,但无法让top和依赖/proc/cpuinfo的应用识别到限制后的核心数。
  • --cpuset-cpus是从系统层面隔离核心可见性,能彻底解决应用和工具的核心数识别问题,匹配你的场景需求。

内容的提问来源于stack exchange,提问作者Felipe Cabral

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 02:15:32