gpt4 book ai didi

docker - SLURM + Docker:如何使用SLURM scancel杀死由docker创建的进程

转载 作者:行者123 更新时间:2023-12-02 18:36:34 34 4
gpt4 key购买 nike

目前,我们已经建立了一个SLURM作为资源管理器的GPU计算集群。由于这是一个用于深度学习的集群,因此我们通过使用nvidia-docker镜像来管理不同的框架和CUDA版本,从而管理依赖性。

我们的典型用例是使用srun分配资源,并给出运行nvidia-docker的命令,该命令按照以下步骤运行实验脚本:

srun --gres=gpu:[num gpus required] nvidia-docker run --rm -u $(id -u):$(id -g) /bin/bash -c [python scripts etc..] &

我们发现了一个问题,如果使用 scancel 命令取消了Slurm作业,则会取消节点上的docker进程,但是在docker中启动的任何实验脚本仍然会继续。据我们了解,这不是SLURM的错,而是杀死docker进程并不会杀死其生成的进程的情况,它们只会通过 docker kill 命令被杀死。虽然可能有某种方式可以在SLURM序言脚本中执行docker kill命令,但我们想知道是否还有其他人遇到过此问题,以及他们是否已通过某种方式解决了该问题。总结一下,我们想知道:

我们如何确保由SLURM SRUN启动的,在nvidia-docker容器中启动的进程被SCANCEL杀死?

最佳答案

配置Slurm以使用cgroups可能会有所帮助。启用cgroups后,属于作业的任何进程都将附加到cgroup并在作业结束时销毁。销毁是由内核负责的,因此常规进程无法避免这种情况。

关于docker - SLURM + Docker:如何使用SLURM scancel杀死由docker创建的进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55167006/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com