'Dask : how the memory limit is calculated in "auto" mode?
The documentation shows the following formula in case of "auto" mode :
$ dask-worker .. --memory-limit=auto # TOTAL_MEMORY * min(1, nthreads / total_nthreads)
My CPU spec :
Architecture: x86_64
CPU(s): 4
On-line CPU(s) list: 0-3
Thread(s) per core: 1
Core(s) per socket: 4
Socket(s): 1
My memory spec :
MemTotal: 16282416 kB
MemFree: 1142108 kB
MemAvailable: 9397036 kB
When I trigger the dask_worker
command, the following output is displayed :
distributed.worker - INFO - -------------------------------------------------
distributed.worker - INFO - Threads: 1
distributed.worker - INFO - Memory: 3.88 GiB
distributed.worker - INFO - -------------------------------------------------
Could you please explain, how 3.88 GiB memory
is found ? It seems to mismatch with the previous formula
Solution 1:[1]
I suspect nthreads
refers to how many threads this particular worker has available to schedule tasks on while total_nthreads
refers to the total number of threads available on your system.
The dask-worker
CLI command has the same defaults as LocalCluster
(see GitHub issue). Assuming the defaults for LocalCluster
spin up n
workers where n
is the number of available cores on your system and assign m
threads to each worker where m
is the number of threads per core:
n = 4 # number of cores
m = 1 # number of threads per core
TOTAL_MEMORY = 16282416 kB
TOTAL_MEMORY * min(1, 1 / 4)
> 4070604
4070604 kB is 3.79 GiB
See the docs here:
https://docs.dask.org/en/latest/deploying-cli.html#dask-worker
--nthreads
Number of threads per process.
--nprocs
Deprecated. Use ‘–nworkers’ instead. Number of worker processes to launch. If negative, then (CPU_COUNT + 1 + nprocs) is used. Set to ‘auto’ to set nprocs and nthreads dynamically based on CPU_COUNT
--nworkers <n_workers>
Number of worker processes to launch. If negative, then (CPU_COUNT + 1 + nworkers) is used. Set to ‘auto’ to set nworkers and nthreads dynamically based on CPU_COUNT
Also see the source for LocalCluster
for how the defaults are set:
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | matthiasdv |