12

我有一个托管 Web 服务器的 docker 映像和另一个运行后台任务的映像。大多数时候web服务器是空闲的,应该允许后台任务使用100%的CPU,但是任何时候web服务器需要资源,它都应该优先使用CPU,这样它才能快速响应。

如果一切都在一台 linux 机器上运行,我可以使用类似的东西nice -n19 background-task来运行任务,它们将允许 web 服务器尽可能多的 CPU。

nice有没有办法在一个级别上运行整个容器?我知道我可以使用 cpu_quota 限制每个后台任务可用的 CPU 时间量,但这并不能解决问题。如果 Web 服务器想要使用所有 4 个 CPU 内核来为客户端提供服务,则应该允许它。如果 Web 服务器不忙,所有 4 个 CPU 内核都应该在后台任务上工作。

如果我将 Dockerfile 中的命令更改为:

nice -n19 background-task

这会在容器之间工作吗?容器内的进程都是在同一个内核上运行的所有普通进程,所以看起来会,但我不确定。

这似乎是一件相当明显的事情。我错过了什么吗?

4

1 回答 1

7

docker-processes 是通常的操作系统进程。

是否使用 Docker 不是进程调度器关心的问题。

所以nice/renice与其他人一样适用于 docker-processes。

于 2019-01-16T11:26:16.543 回答