rsync è molto lento (fattore da 8 a 10) rispetto a cp nella copia di file da nfs-share a dir locale


17

Ho un server Ubuntu appena installato che dovrebbe essere il nuovo server di backup per la nostra memoria VM. Il server ha 4 schede di rete, 2 delle quali 10 Gbit (in effetti un Intel x540-T2 con il driver più recente disponibile) che vengono utilizzati per connettersi alla SAN. Ho la condivisione nfs montata localmente e ho confrontato le differenze di velocità durante la copia di una directory con ~ 30 file, circa 15 immagini vm e file di registro corrispondenti. Le immagini hanno dimensioni comprese tra 8 GB e 600 GB.

usando:

cp -rf /mnt/nfs-share /backup-storage/

bmon mostra di conseguenza circa 600 MiB / s.

utilizzando

rsync -av /mnt/nfs-share /backup-storage/

bmon mostra alcuni pacchetti nei primi secondi, si ferma per circa 30 secondi e quindi si accumula fino a circa 60-75 MiB / s. La CPU è di circa il 60%.

Cosa devo / posso cambiare per usare rsynccon le stesse prestazioni di cp?

Risposte:


20

Penso che queste differenze siano abbastanza ben stabilite tra cpe rsync. Vedi questo articolo come riferimento, intitolato: Uno sguardo alle prestazioni di rsync .

estratto:
The four commands tested were:

    rsync $SRC $DEST
    echo $SRC | cpio -p $DEST
    cp  $SRC $DEST
    cat $SRC > $DEST/$SRC

The results for rsync, cpio, cp, and cat were:

user    sys     elapsed hog MiB/s   test
5.24    77.92   101.86  81% 100.53  cpio
0.85    53.77   101.12  54% 101.27  cp
1.73    59.47   100.84  60% 101.55  cat
139.69  93.50   280.40  83% 36.52   rsync

Uso rsyncquotidianamente. Ci sono cose che puoi fare per migliorare la situazione.

Ad esempio puoi provare a usare l' -Winterruttore:

-W, --whole-file            copy files whole (w/o delta-xfer algorithm)

Inoltre suggerirei di assicurarti di avere le versioni 3.x di rsync. Ci sono stati notevoli miglioramenti quando siamo passati alle versioni più recenti.


15

Il modo per fare in modo che rsync abbia le stesse prestazioni di cp è di scriverlo "cp".

La differenza tra i due comandi è significativa anche se l'effetto netto può essere lo stesso. In particolare, rsync fa un sacco di letture per vedere se un file o parte di un file deve essere copiato o meno.

C'è qualche motivo per cui vuoi usare rsync? Perché cp copia "alla cieca" vedrai prestazioni raw superiori. Se, per una serie di condizioni di attivazione, viene utilizzato il meccanismo "delta-transfer" di rsync, vedrai diminuire le velocità di trasferimento e l'utilizzo della CPU aumenterà praticamente nel modo indicato.


Sono consapevole del comportamento, ma non mi aspettavo un tale effetto. Ho pensato che, dato CPU-Power e IOPS rsync dovrebbe essere eseguito almeno a 300 MiB / s, soprattutto se il file da copiare non esiste. Non ho ancora finito i test. Il backup con rsync sarebbe più comodo, ma posso anche scrivere uno script usando cp, dd o qualunque cosa mi venga in mente. Ora voglio testare varie possibilità su diversi filesystem per valutare ciò che si adatta meglio.
soulpath,

6
Puoi chiamarmi un empirista, ma quando le tue aspettative e la realtà non sono d'accordo, di solito non è la realtà che si sbaglia. Ci sono una dozzina di ragioni per cui potresti incorrere in questa penalità; anche l'interlacciamento di letture e scritture su una SAN può avere notevoli prestazioni in base ai dettagli del software.
msw,

3
Non avevo dubbi sulla realtà, solo su rsync- ma a causa di queste differenze andrò con la scrittura di uno script usando cp e alcuni checksum. Grazie per il tuo consiglio!
soulpath,

No, semplicemente non usare rsync su file system collegati in rete. Il tuo computer deve scaricare l'intero file, quindi perdi tutti i vantaggi di rsync.
Giacomo Catenazzi,

Purtroppo questa risposta è sbagliata nei suoi dettagli. Quando si copia tra filesystem "locali" (e sì, un mount NFS è un filesystem locale in questo contesto), rsync non legge il file di destinazione durante la copia a meno che non si abiliti esplicitamente questa operazione controproducente con --whole-file. In questa situazione è proprio come molto lento cp.
roaima,
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.