Cgroups Centos7, ограничение общих ресурсов ЦП для cronjobs

Можно ли ограничить количество ресурсов ЦП для процессов, запускаемых из cron? Предыстория: у нас есть общий хостинг на Centos7, и клиенты могут создавать cronjobs через панель управления directadmin. Иногда эти cronjobs съедают весь процессор. Вот почему я хотел бы ограничить процессор для процессов, запускаемых cronjobs.

Я пробовал:

# systemctl set-property crond.service CPUShares=500

Но задания, запущенные из cron, похоже, переходят в user.slice: /user.slice/user-1003.slice/session-283630.scope[12115estiveТак что похоже, что он не унаследован cpushares.

Можно ли ограничить общие ресурсы cpu для cronjobs?

Кстати: почему он показывает CPUShares = 18446744073709551615, а не CPUShares = 1024? Когда я проверяю /sys/fs/cgroup/cpu,cpuacct/user.slice/user-0.slice/cpu.shares, он показывает 1024:

# cat /sys/fs/cgroup/cpu,cpuacct/user.slice/user-0.slice/cpu.shares 
1024

Но с systemctl показывает CPUShares = 18446744073709551615:

# systemctl show user-0.slice -p CPUShares
CPUShares=18446744073709551615
1
задан 16 November 2017 в 14:59
1 ответ

Похоже, таймеры systemd могут быть ответ на то, что вам нужно, системные таймеры имеют встроенную поддержку cgroups, подробнее здесь: https://wiki.archlinux.org/index.php/Systemd/Timers

Если вы должны выполнить с помощью cron cgexec может быть билетом, это не для всех cronjobs, это должно быть специфично для команды, запущенной в cronjob. Дополнительная информация здесь: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/resource_management_guide/starting_a_process

0
ответ дан 4 December 2019 в 04:26

Теги

Похожие вопросы