У нас есть кластер под управлением CentOS с Sun Grid Engine для исследовательского моделирования. Однако некоторые пользователи, которые не слишком знакомы с системой, в конечном итоге запускают задания на головном узле, что, конечно, замедляет работу всех остальных.
В будущем я хотел бы разместить сообщение входа в систему SSH, предупреждающее людей о максимальном времени выполнения программ, запускаемых пользователями непосредственно на головном узле, но также разрешить выполнение длинных заданий (например, больших операций tar / gzip), если они приятно это.
TL; DR: как мне ограничить задания, выполняемые пользователями, до 24 часов времени ЦП, если значение nice <= 0?
Вы можете попробовать написать сценарий, который проверяет выполняемые задания, записывает их использование и решает, что делать после определенного количества. Вы также можете попробовать И - Auto Nice Daemon и ulimits
/PAM limits
к ограничить время процессора пользователя (после того, как пользователь использует столько времени процессора, процессы / сеансы завершаются).
Не полное решение, но впоследствии я нашел нужную команду:
ps alr | sed 1d | awk '{print ($6 <= 0)? $2 " " $3 " " $12 : ""}' | grep -v "^$"
В котором перечислены все запущенные задания с хорошим значением <= 0 в трех столбцах, состоящих из UID, PID и общего времени выполнения, как такового:
543 3208 11436:31
511 16491 0:00
Я надеюсь, что это относительно простой вопрос - настроить задание cron для анализа этих данных, проверки UID и, при необходимости, уничтожения заданий.
с помощью cpulimit; в debian есть в репозиториях, но не в centos. Здесь у них есть инструкции по его компиляции и использованию: ссылка на сайт. Если у вас есть кластер, просто скомпилируйте его на одной резервной машине, протестируйте и разверните с помощью инструмента управления конфигурацией, такого как cfengine.