Понижение приоритетов программ в Debian через nice и ionice

Dmitry Kornev
  • 7 апреля 2016
  • 923

Процесс создания бэкапов или запуск других «тяжёлых» скриптов может сопровождаться существенным отъединением ценных ресурсов процессора и диска. Из-за этого свою основную функцию веб-сервер начинает выполнять с существенными тормозами. Поправить ситуацию могут утилиты nice и ionice.

Они сразу есть в Debian, устанавливать их не требуется.

nice — позволяет изменить для программы приоритет выполнения процессором.

Формат использования:

nice -n 19 команда

Здесь число 19 задаёт наименьший приоритет. Можно использовать цифры в диапазоне от -20 до 19. Соответственно -20 — это наибольший приоритет. Если приоритет не задаётся принудительно, то считается, что он равен 0.

Примеры использования:

nice -n 19 tar -czf /tmp/pack.tar.gz dir
nice -n 19 backup.sh

ionice — позволяет изменить для программы приоритет при операциях ввода/вывода.

Формат использования:

ionice -c2 -n7 команда

Здесь первое число задаёт класс, а второе приоритет. Класс задаётся цифрой от 1 до 3, означают они следующее:

  • Real time — преимущество при операциях, без обращения внимания на работу других процессов. При этом дополнительно задаётся приоритет от 0 до 7. Минимальный приоритет это 7.
  • Best Effort — класс используется по умолчанию. Аналогично дополнительно задаётся приоритет от 0 до 7. Минимальный приоритет это 7.
  • Idle — операции ввода/вывода допустимы только в случае, если их требуют другие программы. В общем, когда диск простаивает без дела. Приоритет в данном случае не задаётся.

Примеры использования:

ionice -c2 -n7 tar -czf /tmp/pack.tar.gz dir
ionice -c3 backup.sh

Можно совместить использование nice и ionice, пример:

nice -n 19 ionice -c2 -n7 tar -czf /tmp/pack.tar.gz dir

Проще всего добавлять эти команды прямо в крон:

0 3 * * * nice -n 19 ionice -c2 -n7 /home/backup_script.sh

В данном случае все команды, которые есть в файле backup_script.sh будут выполняться с заданными приоритетами.

Комментарии