Agradável RSync no controle remoto

2

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.

    
por El Dude 22.11.2016 / 19:51

2 respostas

1

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.

    
por 22.11.2016 / 19:58
1

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.

    
por 22.11.2016 / 21:04

Tags