在使用任务限制/工作资源时,如何在dask.distributed中启用适当的工作窃取?

在使用任务限制/工作资源时,如何在dask.distributed中启用适当的工作窃取?,dask,dask-distributed,Dask,Dask Distributed,上下文 我正在使用dask.distributed跨机器并行计算。因此,我在连接到dask调度程序的不同机器上运行dask工作程序,然后我可以将自定义图与所需的密钥一起提交到该调度程序 由于网络装载限制,我的输入数据(和输出存储)仅可用于计算机的一个子集(“i/o主机”)。我试着用两种方法来处理这个问题: i/o操作中涉及的所有任务仅限于i/o主机(它们只能在有权访问数据的计算机上运行的辅助进程上运行),非i/o任务仅限于非i/o主机 i/o操作中涉及的所有任务都绑定到提供资源“io”(i/o主

上下文

我正在使用dask.distributed跨机器并行计算。因此,我在连接到dask调度程序的不同机器上运行dask工作程序,然后我可以将自定义图与所需的密钥一起提交到该调度程序

由于网络装载限制,我的输入数据(和输出存储)仅可用于计算机的一个子集(“i/o主机”)。我试着用两种方法来处理这个问题:

  • i/o操作中涉及的所有任务仅限于i/o主机(它们只能在有权访问数据的计算机上运行的辅助进程上运行),非i/o任务仅限于非i/o主机
  • i/o操作中涉及的所有任务都绑定到提供资源“io”(i/o主机)的工作线程,非i/o任务绑定到提供资源“计算”的非i/o主机上的工作线程
  • 不允许非i/o任务在i/o主机上运行的背后的想法是确保其工作人员可用于i/o任务

    问题

    这两种方法都能按预期工作,因为它们将i/o任务限制在正确的工作者身上。然而,我注意到,当使用这两种方法中的任何一种时,只有极少数工人积累了大量的任务,而大多数其他工人仍然处于空闲状态

    在阅读了任务在员工中的分配情况后,我发现偷工减料似乎被故意禁止用于受限任务()。这似乎也适用于资源框架

    问题


    有没有一种很好的方法可以将对任务的限制与偷工减料结合起来?

    这是对形势的一个很好的评估,也是一个公平的观点。我建议打开一个GitHub问题来长期跟踪它。谢谢!我将在此主题上打开GitHub问题。并在此处合并PR:。利用资源偷盗工作现在似乎奏效了(我自己还没有尝试过)!