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.

Respostas:


35

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

rsync --rsync-path="nice rsync" foo remotebox:/tmp/

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)

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


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


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.


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


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.