Хороший Rsync на удаленной машине

25

При использовании rsync + ssh для доступа к удаленной машине, есть ли способ «приятно» обработать процесс rsync на удаленной машине (чтобы понизить его приоритет)?

Редактирование вопроса для уточнения:

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
backups  16651 86.2  0.1   3576  1636 ?        Rs   11:06   0:06 rsync --ser...

(линия rsync обрезана)

Это резервное задание cron, которое обычно выполняется в 4 часа ночи, но когда я просыпаюсь (и фиксирую, или использую Bugzilla, размещенную на той же машине), это убивает производительность сервера, поэтому я хотел бы быстро «взломать», чтобы попытаться исправить это немного.

mwalling
источник

Ответы:

35

Вы можете использовать --rsync-pathопцию, например.

rsync --rsync-path="nice rsync" foo remotebox:/tmp/
Hasturkun
источник
15
Вы можете также рассмотреть использование ionice , например --rsync-path="ionice -c 3 nice rsync", хотя современные Linux автоматически уменьшают приоритет ввода-вывода для процессов nice'd (см. Справочную страницу, на которую я ссылался).
Джо Лисс
Я уже пробовал это, но мой sshd все еще работает наnice 0
Felipe Alvarez
на FreeBSD-подобных системах, где у вас их нет ionice, установка --bwlimitопции хороша для более приятного rsync.
deed02392
1
У меня также была проблема с этим вариантом, не имеющим никакого значения. Оказалось, что сервер, к которому я подключался, был настроен в авторизованном ключе, чтобы принимать только определенную команду rsync, которая переопределяла --rsync-pathуказанную мной опцию.
Энди Беверли
7
  • Принимая --rsync-pathвариант у вас естьrsync --rsync-path="ionice -c 3 nice -n 12 rsync" localDirectory remoteHost:/tmp/
  • Принимая вариант конфигурационного файла можно изменить или раскомментируйте в файле /etc/default/rsyncна RSYNC_NICE='17'значение и RSYNC_IONICE='-c3'значение

Для обоих значение ionice будет для приоритета жесткого диска

  • 1 -> Реальное время
  • 2 -> Лучшее усилие
  • 3 -> Ildle (когда любой другой процесс не использует HD)

Обратите внимание, что для Linux только cfqпланировщик действительно реализует классы и приоритеты ввода-вывода. Если удаленный системный администратор выбрал для IO планировщик noop, deadlineили какой - то более экзотического варианта вы можете обнаружить , что на ioniceсамом деле ничего не делает. Нужно быть в состоянии получить высокую производительность cfqи все еще иметь возможность использовать классы и приоритеты ввода-вывода, правильно настроив cfq .

для хорошего значения для приоритета процессора

  • -20 (наиболее благоприятный для процесса)
  • (по умолчанию 10), если не указан -n
  • 19 (наименее благоприятный для процесса)
Филипп Гачу
источник
Кто несет ответственность за /etc/default/rsync? Читает ли этот файл сам rsync, или это делает linux-flavour / distribution?
Геттли
... Я думаю, что нашел решение /etc/default/rsync- файл по умолчанию для режима демона rsync. Я предполагаю, что это применимо, только если вы подключаетесь к демону rsync по протоколу rsync. Я думаю, это не относится, если вы звоните через ssh.
Геттли
2

Быстрое и грязное решение состоит в том, чтобы создать небольшой скрипт-обертку с именем 'rsync', который затеняет $ PATH до реального двоичного файла rsync, например:

#!/bin/sh
nice -10 /path/to/proper/rsync $*

Или настройте файл authorized_keys так, чтобы он выполнял обработку rsync. (Предполагая, что вы используете ключи SSH).

пример:

command=”/home/user/bin/nice-rsync.sh" ssh-dss asdf....

Теперь в вашем /home/user/bin/nice-rsync.sh

#!/bin/sh
case $SSH_ORIGINAL_COMMAND in
  rsync\ --server*)
    nice -10 $SSH_ORIGINAL_COMMAND
    ;;
  *)
    $SSH_ORIGINAL_COMMAND
    ;;
esac

НТН

Пайхимис
источник
2

Вы можете отключить сжатие по сети, не включая -zаргумент, который может сэкономить некоторое время процессора с обеих сторон. Или измените, как rsync использует контрольные суммы, посмотрите на--checksum

Рори
источник
Я принял ответ Хастуркуна (так как он ответил на мой вопрос), но вы подняли хороший вопрос: я сравнил сжатие против без сжатия, и это только добавило 2 минуты к работе. Я просто привык к использованию -avz в качестве флагов, и я никогда не думал о том, чтобы сбросить -z.
Стена
Моя привычка - использовать -aPh, я редко использую -z
Рори
0

Rsync не должен сильно загружать процессор. Я сомневаюсь, что вы можете навязать определенную привлекательность с другого конца, но то, что вы могли бы сделать, это ограничить полосу пропускания, которую rsync использует с брандмауэром, что в конечном итоге уменьшит объем обработки, которую он может выполнить за X времени.

Zimmy-DUB-Zongy-Цзун-Dubby
источник
Добавлен некоторый вывод из «ps aux», чтобы показать, что он делает с процессором. Я перехожу по медленной ссылке, поэтому у меня включена опция --compress, но она также вызывает большой объем доступа к диску, который я надеялся сбить, используя хороший (непреднамеренный побочный эффект)
mwalling
Установка хорошего значения обычно также влияет на точность ввода / вывода, что обычно и требуется.
Брэм Шенмейкерс
rsyncне требует много ресурсов ЦП, но, topтем не менее, может появиться в зависимости от того, считает ли текущее ядро ​​ожидание ввода-вывода как загруженное. Кроме того, если какой-либо другой процесс должен получить доступ к хранилищу и rsyncему разрешено работать с полной скоростью, в результате все другие процессы будут замедлены.
Микко Ранталайнен
-7

Я так не думаю, вам нужно индивидуальное решение для этого .. используйте FTP

Ультрачеловек
источник
6
Вы знаете, это хорошая идея. Кому нужны все функции rsync, такие как возможность запуска по ssh без необходимости запуска демона на удаленной машине (и встроенное шифрование ssh), передача сжатия, возобновление загрузок, только передача различий ... вот и все навороты. Я собираюсь бежать домой прямо сейчас и использовать мою PS / 2 System 60 для FTP немного аниме!
Стена
Пожалуйста, удалите этот ответ, так как он не отвечает на вопрос и предлагает альтернативу, значительно худшую, чем пример в вопросе.
user1133275