我有一个Docker镜像,它托管了一个Web服务器和另一个运行后台任务的容器。大部分时间Web服务器处于空闲状态,后台任务应该允许使用100%的CPU,但是任何时候Web服务器需要资源,它都应该优先使用CPU,以便快速响应。
如果所有东西都在一台Linux机器上运行,我可以使用诸如
是否有一种方法可以以
如果我更改Dockerfile中的命令为:
如果所有东西都在一台Linux机器上运行,我可以使用诸如
nice -n19 background-task
之类的方法来运行这些任务,并且它们将允许Web服务器使用所需的所有CPU。是否有一种方法可以以
nice
级别运行整个容器?我知道可以使用cpu_quota
限制每个后台任务可用的CPU时间,但这并不能解决问题。如果Web服务器希望使用所有4个CPU核心为客户端提供服务,则应允许这样做。如果Web服务器不忙,所有4个CPU核心都应该用于后台任务。如果我更改Dockerfile中的命令为:
nice -n19 background-task
这会在容器之间起作用吗?容器内的进程都是在同一个内核上运行的普通进程,所以看起来似乎可以,但我不确定。
这似乎是一件相当明显的事情。我有什么遗漏吗?
--cap-add=sys_nice
吗?参考文档:https://docs.docker.com/config/containers/resource_constraints/。 - Alex Yudocker
进程是普通的操作系统进程。因此,nice
/renice
命令对其具有相同的作用。Docker 与否并不影响调度程序。也许我没有理解你的问题。 - Alex Yu--cap-add=sys_nice
来增加 niceness,只需要减少它。 - rjmunro