gpt4 book ai didi

docker - 如何为在Celery群集上部署的所有任务分配相同数量的资源?

转载 作者:行者123 更新时间:2023-12-02 19:48:58 24 4
gpt4 key购买 nike

为了在科学实验中比较和对比三种不同算法的性能,我计划使用Celery调度程序。这些算法由三种不同的工具实现。他们可能已实现并行化,也可能未实现并行化,因此我不想事先做任何假设。数据集包含1万个数据点。所有这三个工具都应在所有数据点上运行;转换为调度程序调度的3万个任务。我想要的是在所有执行中为所有工具分配相同数量的资源。

假设我的物理Ubuntu 18.04服务器配备了24个内核和96 GB的RAM。任务由4位Celery工作人员安排,每个工作人员处理一个任务。我想为每个任务设置4个CPU内核和16 GB内存的上限。此外,任何两个任务都不应争夺相同的内核,即4个任务总共应使用16个内核,每个任务都安排在自己的一组内核上。

是否有任何方法通过Celery或cgroup或任何其他机制来完成此设置?我想避免使用docker,kubernetes或任何基于VM的方法,除非绝对必要。

最佳答案

通过将并发数指定为6,处理CPU内核应该相当容易。但是限制内存使用量是要求的难部分,我相信您可以通过使工作进程由指定内存限制的特定cgroup拥有来实现这一点。

另一种选择是在指定限制的容器中运行 celery worker 。

我不愿这样做,因为可能有一些任务(或带有特定参数的任务)分配了少量的RAM,因此,如果在此类任务运行时无法使用4G RAM,那将很浪费。

不推荐使用Pity Celery自动缩放功能(这是Celery IMHO最酷的功能之一)。实现Celery自动缩放器可以根据内存利用率进行向上/向下缩放,这不是一个艰巨的任务。

关于docker - 如何为在Celery群集上部署的所有任务分配相同数量的资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62048054/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com