Rsync --bwlimit non funziona


12

Attualmente sto usando rsync per trasferire file di grandi dimensioni da un host a un altro. Vorrei limitare l'addebito per questo bonifico. Dopo aver letto la pagina man ho trovato l'opzione --bwlimit che si aspetta un valore KB / s.

Voglio limitare il trasferimento a circa 100 Mbit / s Quindi ho usato le seguenti impostazioni:

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

Ma questo non sembra essere rispettato in base all'output di 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 non sbaglio: 19.33MB / s ~ = 154Mbit / s

Quindi cosa c'è che non va qui?

PS: rsync versione 3.0.6 protocollo versione 30

Grazie per l'aiuto !


Qui funziona con rsync 3.0.4 (Ubuntu), 3.0.6 (openSUSE) e 3.0.9 (Ubuntu) utilizzando gli stessi parametri. Devi fornire ulteriori informazioni sul tuo sistema.
— scai,


@mreithub La risposta in questo post è davvero interessante ma in realtà Hugo sembra trasferire file piuttosto grandi.
— scai,

rsync bwlimits per ogni file, per limitare bw dovresti limitare la connessione, (su Linux usando iptables + tc atmail.com/kb/2009/throttling-bandwidth ), quindi non è un modo semplice.
— zb "

Ciao, sto eseguendo RHEL 6 ma questo non fa molta differenza. Sì, questo è un file di grandi dimensioni, quindi l'addebito dovrebbe essere quasi stabile. Per informazione, il comando equivalente con SCP funziona alla grande. Quindi non so cosa c'è che non va in rsync.
— Hugo

Risposte:


10

Penso che tu abbia sperimentato un po 'di "burstiness" come menzionato nella manpage:

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

Quindi, come ho chiesto prima, il rapporto complessivo alla fine del lavoro era finalmente limitato a 10 milioni.


4

Come menzionato nella pagina man di rsync , viene trasferito in KByte / sec:

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

2
Questo è quello che ho usato: 10.000 kilobyte = 78.12500 megabit
— Hugo

2
Non hai prestato attenzione a quello che ho detto. Gli rsync usano Byte invece di bit , quindi devi calcolare la larghezza di banda in bit e convertirla in byte
— shgnInc

Ho gli stessi problemi, quando lo metto --bwlimit=100, ottengo 275kB / s, molto regolari tra 265-285 kB / s, nessuna burstiness. Cosa c'è di sbagliato qui?
— Brethlosze,

2

Voglio limitare il trasferimento a circa 100 Mbit / s Quindi ho usato le seguenti impostazioni:

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

100 Mbit / s è (circa) 10 MByte / s, ovvero 10.000 KByte / s. Se stai colpendo la rsyncburstiness, forse lo strumento separato trickleti aiuterà:

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

0

Il valore mostrato è l'effettiva velocità di trasferimento che include le velocizzazioni dalla compressione e l'algoritmo delta, questo può essere facilmente osservato vedendo numeri grandi se una rsyncsessione interrotta viene riavviata con trasferimenti parziali abilitati (es --append-verify.).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.