slurm ограничивает количество spwaned процессов

Я новичок, пытаюсь установить / администрировать slurm. Я хочу ограничить количество разветвлений, которое может выполнить slurm job. Я использовал команду stress, чтобы увидеть загрузку процессора по slurm.

Когда я запускаю этот пакетный скрипт

#SBATCH -p Test -c 1
stress -c 1

Работа выполняется нормально, когда одно ядро ​​используется на 100 процентов. Но этот сценарий

#SBATCH -p Test -c 1
stress -c 20

также выполняется, но верхняя команда дает список из 20 идентификаторов PID, разветвленных с использованием ЦП 5 процентов каждый. Это имеет смысл, поскольку общая загрузка составляет 100 процентов ядра ЦП. Это сводит с ума среднюю нагрузку, что, как я узнал из Google, не является правильным представлением о загрузке системы. У меня 2 вопроса

  1. Можно ли в slurm ограничить такое поведение из конфигурации администратора, убив второй запуск. Мои различные попытки пока ничего не дали. Slurm настроен с помощью cgroup и отлично убивает задания памяти. MPI не используется и не настраивается.

  2. Вызывает ли такое поведение неэффективность из-за времени ожидания процесса?

Я попытался установить эти радикальные параметры, чтобы проверить, не произойдет ли что-нибудь.

MaxStepCount = 1 MaxTasksPerNode = 2

Но на удивление ничего не происходит, и после этого я могу отправить еще много вакансий.


person microfuge    schedule 07.02.2019    source источник


Ответы (1)


Задача Slurm - распределять вычислительные ресурсы между пользовательскими заданиями. Самая низкая управляемая единица вычислений упоминается в документации как ЦП. Это относится к потокам обработки / ядрам выполнения, а не к физическим ядрам. Slurm не следит за тем, как эти ресурсы управляются работой. Так что нет, ничто в Slurm не может убить работу со слишком большим количеством потоков пользовательской среды.

Да, запуск такого количества потоков, вероятно, повлияет на эффективность. Все эти потоки вызовут повышенное переключение контекста, если у задания не будет достаточно потоков процессора для их обработки.

MaxStepCount и MaxTasksPerNode предназначены для заданий. «Задачи» в этом контексте - это не потоки пользовательской среды, а отдельные процессы, запускаемые шагом задания.

Надеюсь, это поможет.

person Telgar    schedule 24.02.2019
comment
Спасибо! Это ответ на мой вопрос. - person microfuge; 25.02.2019