Rsync --bwlimit não funciona


12

Atualmente, estou usando o rsync para transferir arquivos grandes de um host para outro. Gostaria de limitar o débito para esta transferência. Depois de ler a página de manual, encontrei a opção --bwlimit, que espera um valor de KB / s.

Quero limitar a transferência para cerca de 100Mbit / s. Então, usei as seguintes configurações:

rsync --progress -v --bwlimit=10000 --temp-dir=/tmp srv:/tmp/* /tmp/

Mas isso não parece ser respeitado de acordo com a saída do rsync:

file.sql.gz
   570851702 100%   33.90MB/s    0:00:16 (xfer#5, to-check=34/39)
file.sql.gz
    11195140 100%    7.45MB/s    0:00:01 (xfer#6, to-check=33/39)
file.sql.gz
    51439169 100%   19.41MB/s    0:00:02 (xfer#7, to-check=32/39)
file.sql.gz
       34022 100%    1.55MB/s    0:00:00 (xfer#8, to-check=31/39)
file.sql.gz
     2305698 100%    6.96MB/s    0:00:00 (xfer#9, to-check=30/39)
file.sql.gz
     2152942 100%    2.73MB/s    0:00:00 (xfer#10, to-check=29/39)
file.sql.gz
    86655633 100%   19.33MB/s    0:00:04 (xfer#11, to-check=28/39)
file.sql.gz
  3614476032  40%   34.82MB/s    0:02:28

Se não estou errado: 19.33MB / s ~ = 154Mbit / s

Então, o que há de errado aqui?

PS: rsync versão 3.0.6 protocolo versão 30

Obrigado pela ajuda !


Aqui, ele funciona com o rsync 3.0.4 (Ubuntu), 3.0.6 (openSUSE) e 3.0.9 (Ubuntu) usando os mesmos parâmetros. Você precisa fornecer mais informações sobre o seu sistema.
Scal


@mreithub A resposta neste post é realmente interessante, mas na verdade Hugo parece transferir arquivos bastante grandes.
Scal

rsync bwlimits para cada arquivo, para limitar o bw, você deve limitar a conexão (no linux usando iptables + tc em mail.com/kb/2009/throttling-bandwidth ), portanto, não é uma maneira fácil.
zb

Olá, estou executando o RHEL 6, mas isso não faz muita diferença. Sim, esse é um arquivo grande, portanto o débito deve ser quase estável. Para obter informações, o comando equivalente ao SCP está funcionando muito bem. Então, eu não sei o que há de errado com o rsync.
Hugo

Respostas:


10

Eu acho que você experimentou algumas "explosões", como mencionado na página de manual:

--bwlimit=RATE
          ... 
          Some "burstiness" may be seen where rsync writes out a block 
          of data and then sleeps to bring the average rate into compliance.

Então, como eu perguntei antes, a proporção geral no final do seu trabalho estava finalmente limitada a 10 milhões.


4

Conforme mencionado na página de manual do rsync , ele é transferido em KByte / s:

--bwlimit=KBPS          limit I/O bandwidth; KBytes per second

2
Foi isso que eu usei: 10 000 kilobytes = 78,12500 megabits
Hugo

2
Você não prestou atenção ao que eu disse. O uso rsync Byte em vez de pouco , então você tem que calcular a largura de banda em pouco e convertê-lo para byte
shgnInc

Eu tenho os mesmos problemas, quando coloco --bwlimit=100, obtenho 275kB / s, muito regular entre 265-285 kB / s, sem rebentamentos. O que há de errado aqui?
Brethlosze 14/07

2

Quero limitar a transferência para cerca de 100Mbit / s. Então, usei as seguintes configurações:

rsync --progress -v --bwlimit=10000 --temp-dir=/tmp srv:/tmp/* /tmp/

100 Mbit / s é (aproximadamente) 10 MByte / s, que é de fato 10.000 KByte / s. Se você estiver com rsyncproblemas, talvez a ferramenta separada trickleajude:

trickle -s -d 10000 -u 10000 -t 10 -l 100 rsync --progress -v --temp-dir=/tmp srv:/tmp/* /tmp/

0

O valor mostrado é a taxa de transferência efetiva, que inclui a aceleração da compactação e o algoritmo delta. Isso pode ser facilmente observado através de números grandes, se uma rsyncsessão interrompida for reiniciada com as transferências parciais ativadas (ex --append-verify).

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.