Есть ли способ , чтобы nice
RSync Deamon на машине назначения? Я должен rsync огромный кусок данных, включая множество небольших файлов, и я боюсь, что удаленный клиент RSync значительно замедлит пункт назначения.
2 ответа
В моем Ubuntu 16.04 я имею следующий текст в /etc /default /rsync:
# run rsyncd at a nice level?
# the rsync daemon can impact performance due to much I/O and CPU usage,
# so you may want to run it at a nicer priority than the default priority.
# Allowed values are 0 - 19 inclusive; 10 is a reasonable value.
RSYNC_NICE=''
# run rsyncd with ionice?
# "ionice" does for IO load what "nice" does for CPU load.
# As rsync is often used for backups which aren't all that time-critical,
# reducing the rsync IO priority will benefit the rest of the system.
# See the manpage for ionice for allowed options.
# -c3 is recommended, this will run rsync IO at "idle" priority. Uncomment
# the next line to activate this.
# RSYNC_IONICE='-c3'
Теоретически, установив эти значения равными 10 и -c3 соответственно, а затем перезапустив демон rsync, он должен запустить демон на запрошенных хороших уровнях. Однако после этого я обнаружил, что он все еще работает на хорошем уровне 0.
$ ps -lfp $(pidof rsync)
F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD
4 S root 18704 1 0 80 0 - 2785 poll_s 13:42 ? 00:00:00 /usr/bin/rsync --daemon --no-detach
Так что здесь происходит? Я посмотрел на файл модуля systemd для rsync и нашел это:
$ cat /lib/systemd/system/rsync.service
[Unit]
Description=fast remote file copy program daemon
ConditionPathExists=/etc/rsyncd.conf
[Service]
ExecStart=/usr/bin/rsync --daemon --no-detach
[Install]
WantedBy=multi-user.target
Он даже не смотрит на мой файл /etc /default /rsync. Этот файл используется только в том случае, если вы используете System-V init-System. Для systemd (который используется по умолчанию с Debian 8 /jessie, он игнорируется.
Поскольку файл /lib/systemd/system/rsync.service может быть перезаписан, скопируйте его в /etc/systemd/system/rsync.service. Затем измените строку ExecStart, чтобы она выглядела следующим образом:
ExecStart=/usr/bin/nice -n 10 /usr/bin/ionice -c3 /usr/bin/rsync --daemon --no-detach
затем перезагрузил конфигурацию systemd (sudo systemctl daemon-reload
) и перезапустил rsync (sudo systemctl restart rsync
). Это дало мне следующее:
$ ps -lfp $(pidof rsync)
F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD
4 S root 18762 1 0 90 10 - 2785 - 13:43 ? 00:00:00 /usr/bin/rsync --daemon --no-detach
Теперь у меня есть хорошее значение 10, как я хотел, но я не думаю, что оно выживет в следующий раз, когда я установлю обновление для rsync. В зависимости от вашего дистрибутива вы можете добиться успеха, просто изменив значения в /etc /default /rsync, но обязательно проверьте работающий процесс после перезапуска демона.
Используйте параметр --rsync-path
для запуска любой оболочки или комбинации команд (включая sudo
, nice
и другие) вместо базового rsync
на удаленной стороне.