Rsync --bwlimit nie działa

12

Obecnie używam rsync do przesyłania dużych plików z hosta na inny. Chciałbym ograniczyć debet za ten przelew. Po przeczytaniu strony podręcznika znalazłem opcję --bwlimit, która oczekuje wartości KB / s.

Chcę ograniczyć transfer do około 100 Mb / s. Użyłem więc następujących ustawień:

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

Ale to nie wydaje się być przestrzegane zgodnie z danymi wyjściowymi 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

Jeśli się nie mylę: 19,33 MB / s ~ = 154 Mb / s

Więc co jest tutaj nie tak?

PS: rsync wersja 3.0.6 protokół wersja 30

Dzięki za pomoc !

Hugo
źródło
Tutaj działa z rsync 3.0.4 (Ubuntu), 3.0.6 (openSUSE) i 3.0.9 (Ubuntu) przy użyciu tych samych parametrów. Musisz podać więcej informacji o swoim systemie.
scai
@mreithub Odpowiedź w tym poście jest rzeczywiście interesująca, ale tak naprawdę Hugo wydaje się przesyłać raczej duże pliki.
scai
rsync bwlimits dla każdego pliku, aby ograniczyć bw, należy ograniczyć połączenie (w systemie Linux przy użyciu iptables + tc atmail.com/kb/2009/throttling-bandwidth ), więc nie jest to łatwy sposób.
zb
Witam, korzystam z RHEL 6, ale to nie robi dużej różnicy. Tak, to duży plik, więc obciążenie powinno być prawie stabilne. Aby uzyskać informacje, równoważne polecenie z SCP działa świetnie. Więc nie wiem, co jest nie tak z rsync.
Hugo,

Odpowiedzi:

10

Myślę, że doświadczyłeś „pękania”, jak wspomniano na stronie:

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

Tak jak zapytałem wcześniej, ogólny stosunek na koniec twojej pracy był w końcu ograniczony do 10 milionów.


źródło
4

Jak wspomniano na stronie podręcznika rsync , przesyłany jest on w KByte / sec:

--bwlimit=KBPS          limit I/O bandwidth; KBytes per second
shgnInc
źródło
2
Właśnie tego użyłem: 10 000 kilobajtów = 78,12500 megabitów
Hugo,
2
Nie zwracałeś uwagi na to, co powiedziałem. Rsync używa Bajta zamiast bitu , więc musisz obliczyć przepustowość w bitach i ukryć ją w bajtach
shgnInc
Mam te same problemy, kiedy umieszczam --bwlimit=100, otrzymuję 275 kB / s, bardzo regularny między 265-285 kB / s, brak pękania. Co tu jest nie tak?
Brethlosze
2

Chcę ograniczyć transfer do około 100 Mb / s Więc użyłem następujących ustawień:

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

100 Mbit / s to (około) 10 MB / s, co w rzeczywistości wynosi 10 000 KB / s. Jeśli rsyncuderzasz w pęknięcie, być może oddzielne narzędzie tricklepomoże:

trickle -s -d 10000 -u 10000 -t 10 -l 100 rsync --progress -v --temp-dir=/tmp srv:/tmp/* /tmp/
roaima
źródło
0

Pokazana wartość to efektywna szybkość transferu, która obejmuje przyspieszenie kompresji i algorytm delta, można to łatwo zaobserwować, widząc duże liczby, jeśli przerwana rsyncsesja zostanie ponownie uruchomiona z włączonymi częściowymi transferami (np --append-verify.).

Daniel Sokołowski
źródło