我们如何在通过Kubernetes上的头盔运行的dask分布式中为每个工作人员选择--nthreads和--nprocs?

问题描述 投票:0回答:2

我正在Dask上运行一些I / O密集型Python代码,并希望增加每个工作线程的线程数。我已经部署了一个Kubernetes集群,该集群运行通过helm分发的Dask。我从worker deployment template中看到,一个工作线程的数量设置为CPU数量,但是我想将线程数量设置得更高,除非这是一种反模式。我怎么做?

this similar question看来,我可以SSH到dask调度程序并使用dask-worker来启动工作程序吗?但是理想情况下,我将能够通过掌舵来配置工作人员资源,这样我就不必与调度程序进行交互,只需要通过Client向其提交作业即可。

kubernetes google-kubernetes-engine dask dask-distributed
2个回答
0
投票

Python中的线程处理是一种谨慎的技术,它实际上取决于您的代码。为了简单起见,-nprocs应该几乎应为1,如果要更多进程,请启动更多副本。对于线程计数,首先要记住,GIL意味着一次只能运行一个线程。因此,您只能在两个主要情况下获得并发收益:1)一些线程在I / O上被阻塞,如等待从数据库或Web API听到回音,或者2)一些线程在NumPy或好友中运行非GIL绑定的C代码。对于第二种情况,您仍然无法获得比CPU数量更多的并发性,因为这只是一次要运行多少个插槽,但是在某些情况下,第一种情况可以比CPU受益更多的线程。


0
投票

Kubernetes资源限制和请求应与为dask-worker命令提供的--memory-limit和--nthreads参数匹配。欲了解更多信息,请点击链接1(最佳实践在Dask的官方文档中描述)和2

© www.soinside.com 2019 - 2024. All rights reserved.