Use a opção --rsync-path
para executar qualquer wrapper ou combinação de comandos (incluindo sudo
, nice
e mais) em vez do rsync
básico no lado remoto.
Existe uma maneira de nice
o deamon do RSync na máquina de destino? Eu tenho que rsync um enorme chuck de dados, incluindo muitos pequenos arquivos e tenho medo que o cliente remoto RSync irá retardar significativamente o destino.
Use a opção --rsync-path
para executar qualquer wrapper ou combinação de comandos (incluindo sudo
, nice
e mais) em vez do rsync
básico no lado remoto.
Na minha caixa Ubuntu 16.04 eu tenho o seguinte texto em / 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'
Em teoria, definindo esses valores para 10 e -c3 respectivamente, então, reiniciando o daemon rsync, ele deve executar o daemon nos níveis bons solicitados. No entanto, ao fazer isso, descobri que ainda estava rodando em um bom nível de 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
Então, o que está acontecendo aqui? Eu olhei para o arquivo de unidade do systemd para o rsync e achei isso:
$ 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
Não está nem olhando meu arquivo / etc / default / rsync. Este arquivo é usado apenas se você estiver usando o System-V init-System. Para o systemd (que é o padrão desde o Debian 8 / jessie, ele é ignorado.
Como o arquivo /lib/systemd/system/rsync.service pode ser sobrescrito, copie-o para /etc/systemd/system/rsync.service. Em seguida, altere a linha ExecStart para ficar assim:
ExecStart=/usr/bin/nice -n 10 /usr/bin/ionice -c3 /usr/bin/rsync --daemon --no-detach
em seguida, recarregou a configuração do systemd ( sudo systemctl daemon-reload
) e reiniciou o rsync ( sudo systemctl restart rsync
). Isso me deu o seguinte:
$ 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
Agora tenho um bom valor de 10, como eu queria, mas eu não acho que isso vai sobreviver na próxima vez que eu instalar uma atualização para o rsync. Dependendo da sua distribuição, você pode ter sucesso simplesmente alterando os valores em / etc / default / rsync, mas certifique-se de verificar o processo em execução depois de reiniciar o daemon.