Назад | Перейти на главную страницу

Группы 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

# systemctl show session-283630.scope -p CPUShares
CPUShares=18446744073709551615

Так что похоже, что он не унаследовал cpushares.

Можно ли ограничить долю ЦП для 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

Похоже, что таймеры systemd могут быть ответом на то, что вам нужно, у 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