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.