linux - 应用 CPU Hogs 时的 Docker 和 CPU 优先级

标签 linux docker stress-testing

我遇到了一些我无法完全理解的事情,所以我想我会求助于比我更聪明的头脑。

我的问题是我试图弄清楚 Docker 如何与主机 CPU 交互,以及 Docker 和主机中的哪一个优先使用资源。我希望主机的 CPU 使用率优先于容器。

到目前为止,我所做的是启动一个常规的 Ubuntu 容器,并使用 cAdvisor 监控该容器的性能。然后,我使用 linux 压力工具在容器内运行 CPU hog,占用所有内核。

stress -c 8

在确认容器确实使用了 100% 的 CPU 后,我在占用所有 8 个内核的主机上运行了相同的命令。我希望看到的是该容器的 CPU 使用率将下降到接近 0%,因为主机现在正在使用所有资源。相反,我看到的是以下内容:

CPU Usage of Docker Container

所以看起来容器和主机平均共享 CPU 资源。我还尝试在主机上运行压力工具,niceness 值为 -20,结果与上述相同。

有什么方法可以为主机设置 CPU 优先级,以便 Docker 容器在主机使用所有 CPU 资源时几乎不使用任何 CPU 资源?

感谢我能得到的任何帮助!

最佳答案

有几个选项可以限制容器的处理器使用,例如设置cpu-periodcpu-quotacpuset-cpus.

以下内容会将容器处理器的使用率限制在 33%。

docker run -it --cpu-quota=33000 ubuntu:latest /bin/bash

这些选项在此处的 Docker 文档中进行了描述: https://docs.docker.com/engine/reference/run/

关于linux - 应用 CPU Hogs 时的 Docker 和 CPU 优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40041275/

相关文章:

ruby-on-rails - Ruby on Rails 4 中的压力测试

php - "connection rejected by remote interface"使用 PDO 连接到 Firebird 3

docker - ekito/cron作业教程出错

java - 压力测试 Java 应用程序代理实用程序

java - 尝试运行 docker compose 时出错

java - Docker - 将 Apache Tomcat Web 服务器连接到 MySQL 服务器

java - 压力测试 BlazeDS 的建议

java - OOM 使用 CRON 但不使用 SHELL

linux - Shebang 导致脚本失败

linux - 将脚本的符号链接(symbolic link)添加到 rc<number>.d 文件夹中以在系统启动期间启动进程