我将使用达斯克KubeCluster在Kubernetes上执行多个算法。我希望一个工作人员运行一个并且只有一个算法,所以我混淆了在初始化时传递给dask的nthreads参数。
kind: Pod
metadata:
labels:
app: MyName
spec:
restartPolicy: Never
containers:
- image: MyFunnyDockerImage
imagePullPolicy: Always
args: [dask-worker, --nthreads, '4', --no-dashboard, --memory-limit, 8GB, --death-timeout, '60']
name: execslotting
resources:
limits:
cpu: "4"
memory: 8G
requests:
cpu: "4"
memory: 8G
imagePullSecrets:
- name: acr-secret当我设置--nthreads=4时,我是否留下了在该工作程序中运行4次算法执行的可能性?
发布于 2022-02-03 10:28:42
nthreads参数指定了dask进程可用于运行计算的主机或pod上的线程数。见达斯克工人医生。
当您设置--nthreads=4时,您告诉Dask,工作进程可以使用4个线程,而不管这个吊舱上有多少个线程可用。例如,如果您的pod有8个可用线程,如果您指定--nthreads=4,Dask只会使用其中的一半。
还请参阅CPU单元上的Kubernetes文档,以获得关于vCPU单元如何与Kubernetes中的线程关联的更详细说明。
如果您不指定nthreads,那么Dask将使用机器上可用的CPU内核来设置一个正常的缺省值,这似乎与Kubernetes处理多线程的方式相匹配(1 vCPU =1超线程)。
在您的示例中,您已经设置了resources.requests.cpu=4,这意味着pod将有4个可用线程可供使用。因此,设置--nthreads=4将允许Dask进程充分利用Dask资源。虽然我相信不设置nthreads也会达到同样的效果。
https://stackoverflow.com/questions/70955894
复制相似问题