Rsync agradável na máquina remota

25

Ao usar o rsync + ssh para acessar uma máquina remota, existe uma maneira de "agradar" o processo rsync na máquina remota (para diminuir sua prioridade)?

Editando a pergunta para esclarecer:

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...

(linha rsync cortada)

Esta é uma tarefa cron de backup que normalmente é executada às 4h da manhã, mas quando estou acordada (e confirmando ou usando o Bugzilla hospedado na mesma máquina), ela mata o desempenho do servidor, então eu queria um "hack" rápido para tentar corrigir um pouco.

mwalling
fonte

Respostas:

35

Você pode usar a --rsync-pathopção, por exemplo.

rsync --rsync-path="nice rsync" foo remotebox:/tmp/
Hasturkun
fonte
15
Você também pode considerar o uso do ionice , por exemplo --rsync-path="ionice -c 3 nice rsync", embora os Linux modernos reduzam automaticamente a prioridade de E / S para processos agradáveis ​​(consulte a página de manual que eu vinculei).
Jo Liss
Eu já tentei isso, mas minha sshd ainda está em execução nonice 0
Felipe Alvarez
no FreeBSD como sistemas onde você não possui ionice, definir a --bwlimitopção é boa para um melhor rsync.
deed02392
11
Eu também tive um problema com esta opção não fazendo nenhuma diferença. Descobriu-se que o servidor ao qual estava me conectando estava configurado em allowed_keys para aceitar apenas um comando rsync específico, que estava substituindo a --rsync-pathopção que eu estava especificando.
Andy Beverley
7
  • Tomando a --rsync-pathopção que você temrsync --rsync-path="ionice -c 3 nice -n 12 rsync" localDirectory remoteHost:/tmp/
  • Tomando a opção de arquivo de configuração, você pode alterar ou descomentar no arquivo /etc/default/rsynco RSYNC_NICE='17'valor e o RSYNC_IONICE='-c3'valor

Para ambos, o valor de ionice será para prioridade no disco rígido

  • 1 -> Tempo real
  • 2 -> Melhor esforço
  • 3 -> Ildle (quando qualquer outro processo não estiver usando o HD)

Observe que, no Linux, apenas o cfqplanejador realmente implementa classes e prioridades de E / S. Se o administrador do sistema remoto tiver optado pelo agendador de E / S noop, deadlineou alguma variante mais exótica, você poderá descobrir que ionicerealmente não faz nada. É necessário obter alto desempenho cfqe ainda ser capaz de usar classes e prioridades de E / S ajustando o cfq corretamente .

por um bom valor para a prioridade do processador

  • -20 (mais favorável ao processo)
  • (padrão 10) se -n não for especificado
  • 19 (menos favorável ao processo)
Philippe Gachoud
fonte
Quem é responsável /etc/default/rsync? O próprio rsync está lendo este arquivo ou é feito pelo linux-flavor / distribution?
guettli
... Acho que encontrei a solução /etc/default/rsyncé o arquivo de padrões do modo rsync daemon. Eu acho que só se aplica se você se conectar ao daemon rsync via rsync-protocol. Eu acho que não se aplica se você chamá-lo via ssh.
guettli
2

Uma solução rápida e suja seria criar um pequeno script de wrapper chamado 'rsync' que sombreie o $ PATH antes do binário rsync real, como:

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

Ou configure o arquivo allowed_keys para que ele execute o nicing do rsync. (Supondo que você esteja usando as teclas ssh).

exemplo:

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

Agora em seu /home/user/bin/nice-rsync.sh

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

HTH

pyhimys
fonte
2

Você pode desativar a compactação na rede, não incluindo o -zargumento, que pode economizar tempo de CPU em ambos os lados. Ou mude como o rsync usa somas de verificação, veja--checksum

Rory
fonte
Aceitei a resposta de Hasturkun (já que ela respondeu à minha pergunta), mas você mencionou um bom ponto: fiz benchmarking com compactação vs sem compactação, e isso levou apenas 2 minutos para o trabalho. Eu me acostumei tanto a usar -avz como minhas bandeiras que nunca pensei em largar -z.
mwalling
Meu hábito é usar -aPh, eu raramente uso -z
Rory
0

O Rsync não deve estar usando muita CPU. Duvido que você possa forçar uma certa gentileza do outro lado, mas o que você poderia fazer é limitar a largura de banda que o rsync está usando com um firewall, o que acabaria por reduzir a quantidade de processamento que ele poderia fazer em X por um período de tempo.

Zimmy-DUB-Zongy-Zong-DUBBY
fonte
Adicionadas algumas saídas do 'ps aux' para mostrar o que está fazendo na CPU. Estou passando por um link lento, então tenho a opção --compress ativada, mas também está causando uma boa quantidade de acesso ao disco, que eu esperava derrubar usando um bom efeito colateral indesejado
mwalling
Definir um bom valor geralmente também afeta a qualidade de E / S, que é o que alguém normalmente deseja.
Bram Schoenmakers
rsyncnão requer muita CPU, mas pode aparecer, no topentanto, dependendo se o kernel atual considera a espera de E / S como ocupada. Além disso, se qualquer outro processo precisar acessar o armazenamento e rsyncpermitir a execução em ritmo total, todos os outros processos serão lentos como resultado.
Mikko Rantalainen 24/06
-7

Eu acho que não, você precisa de uma solução personalizada para isso .. use ftp

Ultraman
fonte
6
Você sabe, isso é uma boa ideia. Quem precisa de todos os recursos do rsync, como executar o ssh sem precisar de um daemon em execução na máquina remota (e a criptografia inerente do ssh), transferir a compactação, retomar downloads, transferir apenas as diferenças ... isso é tudo inchar. Vou correr para casa agora mesmo e usar meu PS / 2 System 60 para enviar FTP a alguns animes!
mwalling
Exclua esta resposta, pois ela não responde à pergunta e oferece uma alternativa significativamente pior que o exemplo da pergunta.
usar o seguinte comando