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

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

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

 

 

Копирование файлов с заниженным приоритетом по операциям ввода-вывода

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

 

mcedit    /root/.bashrc

 

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

alias rsync=»ionice -c2 -n7 rsync»

 

 

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

 

 

Приоритета по операциям с диском у 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»

 

Команда выполняется как обычно

rsync -av . root@123.123.123.123:/home/remote

 

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