Можно ли назначить приоритет nice и ionice всем сценариям, выполняемым демоном cron?
Чтобы быть более конкретным:
У меня есть машина Debian Squeeze Linux с веб-приложением, которое должно стать доступным по всей планете. До сих пор у меня было множество ресурсоемких cronjobs каждую ночь (в Европе) без особого влияния на региональный пользовательский опыт. Однако сейчас я не могу позволить себе, чтобы сервер работал медленнее в любое время.
Есть ли способ заставить все сценарии cron (cron.daily и т. Д.) Наследовать приоритет nice и ionice?
Спасибо за помощь!
Miguel
3 ответа
Да...
Вы можете иметь сценарии для получения определенного набора переменных среды или просто запустить nice/ionice из сценария...
Однако это не является хорошим решением вашей проблемы.
- Можете ли вы сместить или пошатнуть сценарии, чтобы они не боролись за ресурсы?
- Вы понимаете временные или системные паттерны? Например, с 02:00 до 04:00 в системе очень мало пользователей, и сейчас самое время запускать сценарии обслуживания.
- Достаточно ли у вас ресурсов на вашем сервере?
nice
а такжеionice
не хорошие долгосрочные решения.ionice
фактически не влияет на некоторые алгоритмы планирования ядра Linux, основанные на производительности. Он работает с планировщиком CFQ, но есть вероятность, что вы хотите использовать планировщик крайнего срока в серверной системе. Это может оказать большее влияние, чем пытаться навязать процессы.
Возможно, вы захотите настроить службу crond для работы с nice и ionice уже настроенными.
https://web.archive.org/web/20150423145758/http://b.zekjur.net/2012/09/23/systemd-ionice.html
Однако я не проверял это, поэтому я не могу ручаться за это так или иначе.
Если это не сработает или не поможет, вам нужно настроить cgroups.
Возможно, вам лучше всего запустить эти задания cron под отдельным пользователем Linux, который можно ограничить более низким приоритетом. Допустим, у вас есть такой пользователь batchuser
, В вашем /etc/security/limits.conf
, вы хотите добавить запись для этого пользователя (от -19 до 19, где 19 - самый низкий приоритет):
batchuser - priority 19
Тогда любые процессы, запущенные этим пользователем, будь то cron или нет, будут наследовать этот приоритет. Никаких изменений в сценариях, нет env или профилей для установки.
http://manpages.debian.org/cgi-bin/man.cgi?query=limits.conf