dask.submit:调度程序中的内存/负载分配不足

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了dask.submit:调度程序中的内存/负载分配不足相关的知识,希望对你有一定的参考价值。

运行良好的dask服务器:

enter image description here

比起我开始使用publish_dataset预填充有关工作人员的一些数据,看起来分配的内存还不错:

running_dask_clister

接下来,我循环调用futures.append(client.submit(fn, values)),然后调用client.gather(futures)-可以!但这并没有想象的那么快,因为大多数计算/内存负载集中在2个单个进程上(worker4和worker 1):

bad_load_memory_allocation_dask_distributed

问题:

  1. 为什么Dask这样做?
  2. 是否可以在特定作品上预加载数据,而不是submit to the specific workers
  3. 我应该以某种方式在工作线程之间重新分配已使用的内存以实现更好的并行化吗?

相关:submit Dask Worker StealingRegister Worker callbacks

答案

为什么Dask这样做?

不幸的是,我对您的问题了解不多,所以不知道达斯克为什么选择做自己正在做的事情。

是否可以预先加载特定作品的数据,然后提交给特定工人?

是。参见Dask Actors per workerworkers=]的scatter关键字

我应该以某种方式在工作线程之间重新分配已使用的内存以实现更好的并行化吗?

Dask应该为您处理。我建议使用散点而不是publish_dataset,它不会做您认为的工作(我建议查看每种方法的文档字符串)

以上是关于dask.submit:调度程序中的内存/负载分配不足的主要内容,如果未能解决你的问题,请参考以下文章

OpenMP 中的线程任务调度

负载均衡管理 | 优化分配加工程序

Swift中结构体的方法调度&内存分区

常见的负载均衡策略

Nginx的负载均衡(调度算法)及容错处理

nginx支持的负载均衡调度算法