ionice и копирование файлов с пониженным приоритетом


ionice позволяет снизить нагрузку на диск при копировании.

Файлы копируются обычно при помощи rsync, который может сильно нагружать систему если существует ограничение по операциям ввода-вывода.

Чтобы максимально ограничить нагрузку, создаваемую rsync на диск его нужно запускать с ionice.



Чтобы максимально упростить синтаксис команды можно добавить алиас в .bashrc пользователя root (если копирование выполняется им).

mcedit    /root/.bashrc



В конец файла допишем алиас в следующем виде:

alias rsync="ionice -c2 -n7 rsync"



Теперь каждый раз при запуске rsync команда будет выполняться только тогда когда диск находится в состоянии Idle, т.е. когда никаких операций с ним другими процессами не производится



Ключи утилиты ionice


Приоритета по операциям с диском у ionice три, нужный указывается с ключем -c

  1. real time
  2. best effort
  3. idle (операция, запущенная с -с 3 будет выполняться когда процессор не использует HD)

С ключом -n задается класс передаваемой информации, 7 — минимальный приоритет, 1 — максимальный.



Также процесс можно запустить и с nice, задающим приоритет обработки процесса системой.



Дополненное выражение алиаса может выглядеть как

alias rsync="nice 16 ionice -c2 -n7 rsync"



Для nice значение выбирается из диапазона -20 — 19

  • -20 — наиболее приоритетный для системы процесс
  • (default или 10) — используется по умолчанию если приоритет не указан
  • 19 — наименее приоритетный для системы процесс


Для rsync можно ограничить и пропускную способность канала указав ограничение в Кб/сек. Можно указать, например, bwlimit=10000, что ограничит максимальную скорость передачи данных 9,7 Мб/сек.



Скомбинировав все перечисленные методы ограничения приоритета выполнения процесса можно получить алиас для rsync, запустив команду на сервере при этом можно с минимальным потреблением ресурсов скопировать необходимую информацию.

alias rsync="bwlimit=10000 nice 17 ionice -c2 -n7 rsync"



Пример .bashrc с алиасом для ionice приведен на скриншоте:


ionice



Само копирование выполняется как обычно:

rsync -av . [email protected]:/home/remote

Чтобы при подключении к серверу с адресом 123.123.123.123 не запрашивался пароль можно настроить подключение по ssh ключу.


Занять копирование с максимально заниженным приоритетом может довольно длительное время.

Сказать спасибо