SLURM + Docker: как убить процессы, созданные докером, с помощью SLURMs scancel

В настоящее время мы настроили вычислительный кластер GPU с SLURM в качестве диспетчера ресурсов. Поскольку это кластер для глубокого обучения, мы управляем зависимостями, используя образы 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..] &

Мы обнаружили проблему, при которой, если задание slurm отменяется с помощью команды scancel, процесс докера на узле отменяется, но все сценарии эксперимента, запущенные в докере, продолжают выполняться. Насколько мы понимаем, это не ошибка SLURM, а скорее случай, когда завершение процесса докера не уничтожает его порожденные процессы, они будут уничтожены только с помощью команды docker kill. Хотя может быть какой-то способ выполнить команду docker kill в прологе SLURM, нам было интересно, была ли у кого-нибудь еще эта проблема и решили ли они ее каким-то образом. Подводя итог, хотелось бы знать:

Как мы можем гарантировать, что процессы, запущенные в контейнере nvidia-docker, который, в свою очередь, был запущен SLURM SRUN, завершились с помощью SCANCEL?


person despair889    schedule 14.03.2019    source источник
comment
Возможно, вам нужен более высокий уровень воздержания, а не треп. Например, atrio.io - это служба, которая может быть полезна для управления рабочими нагрузками HPC.   -  person robermorales    schedule 15.03.2019


Ответы (1)


Здесь может помочь настройка Slurm для использования cgroups. Если cgroups включен, любой процесс, принадлежащий заданию, присоединяется к cgroup и уничтожается при завершении задания. Об уничтожении заботится ядро, поэтому обычный процесс не может избежать этого.

person damienfrancois    schedule 29.03.2019
comment
Вы хотите включить отслеживание процессов с помощью ProctrackType=proctrack/cgroup в конфигурации slurm? Если да, то у нас это уже включено. - person despair889; 05.04.2019