Workers killed by signal 6/9 and timeout errors during cluster shutdown with `LocalCUDACluster`
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 35/100
- Tipo de issue
- Error
- Claridad
- Necesita aclaración
- Estado de actividad
- Estancado
- Stack tecnológico
- python
- Área
- distributed-systems
Línea de trabajo
El payload no menciona archivos ni pruebas; comienza en los puntos de entrada LocalCUDACluster y cluster.close y reproduce el apagado con la configuración proporcionada. Rastrea las señales y los mensajes de timeout de distributed.nanny junto con el error de tcmalloc y determina después si este es el comportamiento esperado o qué configuración o Best Practice permite un apagado limpio.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
I'm using dask-cuda's LocalCUDACluster for GPU-based distributed computing in a Python script. While the computation completes successfully, I encounter multiple errors during the shutdown phase.
Specifically, after calling cluster.close() and attempting to gracefully shut down the Dask cluster, I see repeated logs like:
distributed.nanny - INFO - Worker process XXX was killed by signal 6
...
distributed.nanny - WARNING - Worker process still alive after 4.0 seconds, killing
...
distributed.nanny - INFO - Worker process XXX was killed by signal 9
Additionally, I get a traceback indicating a TimeoutError during internal cluster state correction:
tornado.application - ERROR - Exception in callback ...
TimeoutError
And finally, a memory-related error from tcmalloc:
src/tcmalloc.cc:284] Attempt to free invalid pointer 0x...
Environment Setup:
- Using
LocalCUDAClusterwith explicit GPU device configuration. - Disabled Dask optimizations (
optimization.fuse.active=False) and set conservative memory thresholds. - Workers are configured with
device_memory_limit="80GB"andthreads_per_worker=1. - Client and cluster are manually closed at the end of execution.
Code Snippet:
dask.config.set({"optimization.fuse.active": False})
dask.config.set({
"distributed.worker.memory.target": 0.6,
"distributed.worker.memory.spill": 0.7,
"distributed.worker.memory.pause": 0.8,
"distributed.worker.memory.terminate": 0.9,
"distributed.comm.timeouts.connect": "300s",
"distributed.comm.timeouts.tcp": "300s",
"distributed.worker.daemon": False,
"distributed.nanny.timeout": "60s"
})
cluster = LocalCUDACluster(
CUDA_VISIBLE_DEVICES=cuda_devices,
device_memory_limit="80GB",
n_workers=n_workers,
threads_per_worker=1,
dashboard_address=':0',
jit_unspill=False,
silence_logs=False
)
client = Client(cluster, timeout='60s')
client.wait_for_workers(n_workers, timeout=120)
# ... computation ...
cluster.close(timeout=300)
Expected Behavior:
Graceful shutdown of workers and scheduler without force-killing or timeout errors.
Actual Behavior:
Workers are terminated forcefully with signals 6 and 9, followed by timeout and memory-related errors during shutdown.
Environment:
- Dask version:
2024.12.1 - Dask-CUDA version:
25.2.0 - Python version: 3.12
- OS: Linux (assumed)
- Relevant packages:
cudf,cupy,torch,distributed, etc.
Question:
Is this expected behavior? Are there additional configurations or best practices to ensure clean shutdown of GPU clusters in Dask?
Any help or guidance would be greatly appreciated!
- Lenguaje dominante
- Python
- Estrellas
- 1.7k
- Forks
- 778
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de dask/distributed
-
needs triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
dask/distributed#9366 ·
-
needs triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
dask/distributed#9353 ·
-
documentation
Dificultad 1/5 1-3 horas Aptitud para principiantes 82/100
dask/distributed#8304 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
dask/distributed#4816 · 2 comentarios ·
-
documentation good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
dask/distributed#2378 · 2 comentarios ·
Todos los issues de dask/distributed
Issues similares
-
[Bug] @deck.gl/arcgis dist import resolves to unpublished @deck.gl/core source path (9.3.11, 9.4.0)Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
workflow: a tick's dispatch counts as 'only this step', and no review self-grants a round unattendedAbiertoworkflow
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
kristofdegrave/homeassistant-smart-charging#1505 ·
Los mantenedores suelen responder en 1 día
-
New Submission: TropWATERAbiertometadata submission
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
-
Wrongly named dashboard variableAbiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
canonical/content-cache-operator#163 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
[submission]Abiertosubmission
Dificultad 1/5 Menos de una hora Aptitud para principiantes 65/100
leanprover/lean-eval-submissions#1852 ·
Los mantenedores suelen responder en 1 día