CPU 配额限制

CPU 配额限制

我在 Ubuntu 14.04 实例上运行批处理作业n1-highcpu-32,该实例有 16 个物理核心(32 个虚拟化核心)。这应该是一个简单的案例(与 相比MPI),但 CPU 利用率却无处不在,正如 所报告的那样top

有些作业的 CPU 利用率超过 300%,而其他作业的 CPU 利用率仅为 10%。因此,完成整个批次的时间比实际时间长 10 倍。每个作业都运行完全相同的代码,这些代码不是多线程的。

有没有办法防止这种行为?也许将 CPU 利用率限制为 100% 或类似方法?

答案1

您可以在单独的 Docker 容器中运行每个进程。默认情况下,--cpu-quota设置为 0,这提供了单个 CPU 的 100%,因此您应该已经设置好了。如果您想手动选择该值,请使用:

docker run -it --cpu-quota="..." [container] [command] [args]

或者,你可以通过标志为给定的 Docker 进程分配特定的 CPU --cpu-setcpus,例如:

docker run -it --cpuset-cpus="1,3" [container] [command] [args]

有关详细信息,请参阅文档docker run

CPU 配额限制

--cpu-quota标志限制容器的 CPU 使用率。默认值 0 允许容器占用 100% 的 CPU 资源(1 个 CPU)。CFS(完全公平调度程序)负责处理执行进程的资源分配,是内核使用的默认 Linux 调度程序。将此值设置为 50000 可将容器限制为 50% 的 CPU 资源。对于多个 CPU,请根据--cpu-quota需要调整。有关更多信息,请参阅有关带​​宽限制的 CFS 文档。

相关内容