GNU/Linux >> Linux Esercitazione >  >> Linux

Perché il mio rsync è così lento?

Soluzione 1:

I motivi possono includere:compressione, crittografia, numero e dimensione dei file copiati, capacità di I/O del disco dei sistemi di origine e di destinazione, overhead TCP... Questi sono tutti fattori che possono influenzare il tipo di trasferimento che stai conducendo.

Pubblica il comando rsync che stai utilizzando e fornisci dettagli sulle specifiche di entrambi i computer.

Modifica:la crittografia è spesso un fattore limitante nelle velocità di rsync. Puoi eseguire con ssh e una cifratura di crittografia più leggera come arcfour

Qualcosa come:rsync -e "ssh -c arcfour"

Oppure puoi usare un rsync/ssh modificato che può disabilitare la crittografia. Vedi hpn-ssh:http://psc.edu/networking/projects/hpn-ssh

Ma ancora una volta, il tuo laptop ha un'unità lenta rispetto alla tua workstation. Le scritture potrebbero essere bloccate e in attesa che l'I/O vada al tuo laptop. Quali sono le tue reali aspettative di performance?

Soluzione 2:

Un altro modo per mitigare l'elevato utilizzo della CPU mantenendo comunque la funzionalità di rsync è passare da rsync/SSH a rsync/NFS. Puoi esportare i percorsi da cui desideri copiare tramite NFS e quindi utilizzare rsync localmente dal montaggio NFS alla posizione di destinazione.

In un test da un disco di rete WD MyBook Live, uno o più rsync dal NAS su una rete Gigabit verso 2 dischi USB locali non copiavano più di 10 MB/sec (CPU:80% usr, 20% sys), dopo aver esportato oltre NFS e rsyncing localmente dalla condivisione NFS su entrambi i dischi Ho ottenuto un totale di 45 MB/sec (massimo entrambi i dischi USB2) e poco utilizzo della CPU. L'utilizzo del disco quando si utilizzava rsync/SSH era di circa il 6% e l'utilizzo di rsync/NFS era più vicino al 24%, mentre entrambi i dischi USB2 erano vicini al 100%.

Quindi abbiamo effettivamente spostato il collo di bottiglia dalla CPU del NAS a entrambi i dischi USB2.

Soluzione 3:

Dopo qualche altro test, ho finalmente trovato la risposta da solo. rsync utilizza il tunneling su ssh per impostazione predefinita. La crittografia lo rende lento. Quindi avevo bisogno di aggirare quella roba crittografica.

Soluzione 1:configurazione di un server rsync

Per usarlo tramite il rsync protocollo, devi impostare un server rsyncd. C'era un /etc/init.d/rsync script sul mio laptop, quindi ho indovinato, rsyncd era in esecuzione. Mi sbagliavo. /etc/init.d/rsync start esiste silenziosamente, quando rsync non è abilitato in /etc/default/rsync . Quindi devi anche configurarlo in /etc/rsyncd.conf , che è una seccatura.

Se riesci a fare tutto questo, devi usare rsync file.foo [email protected]::directory . Tieni presente che ci sono due due punti .

Soluzione 2:server rsh vecchio stile

Tuttavia, la configurazione era troppo complicata per me. Così ho appena installato e rsh-server sul mio portatile. Richiamo di rsync sulla workstation con -e rexec quindi usa rsh invece di ssh. Che poi ha quasi raddoppiato le prestazioni a 44,6 MB/s , che è ancora lento. La velocità rimbalza tra 58 MB/s e 33 MB/s , che indica che potrebbero esserci problemi di buffer o di controllo della congestione. Ma questo va oltre lo scopo di questa domanda.

Soluzione 4:

Queste sono domande e risposte molto vecchie, ma manca una cosa importante:se stai copiando dati già compressi o crittografati, disattiva la compressione.

Se i tuoi dati non sono né compressi né crittografati, vuoi comprimerli solo una volta! Rsync comprime con -z, ssh comprime con -C (potrebbe essere di default). Non ho testato quale sia la migliore poiché i miei dati sono compressi.

Già che ci sono, puoi disattivare l'inoltro X e l'allocazione TTY, risultando in:

rsync -avh -e "ssh -x -T -c arcfour -o Compression=no" $src $dst

Infine, assicurati (ad esempio utilizzando iptraf ) che stai effettivamente utilizzando l'interfaccia di rete che pensi di utilizzare. Ho notato con mia grande sorpresa che sul mio OSX l'ssh in uscita si legava all'IP sull'interfaccia in uscita predefinita invece che all'IP sull'interfaccia su cui i pacchetti dovevano essere instradati. La mia connessione incrociata GB diretta tra due laptop collegati anche tramite WiFi non veniva utilizzata. Dopo le indagini, era dovuto all'utilizzo di 169.254/16, che il Mac mette su tutte le interfacce, e al computer di destinazione che rispondeva alle richieste ARP anche se la richiesta arrivava su un'interfaccia diversa.


Linux
  1. Perché uso Linux per gestire il mio studio di yoga

  2. Perché mi sono innamorato di Antergos Linux

  3. Perché Windows10 VM è lento su OpenStack?

  4. Df vs. Du:Perché così tanta differenza??

  5. Perché Scp è così lento e come renderlo più veloce?

Se Chown può cambiare i gruppi, perché è stato creato Chgrp?

Perché è stato scelto "~" per rappresentare la home directory?

Registrazione solo di file trasferiti con Rsync?

Perché Rsync insiste sul fatto che c'è una differenza la seconda volta che lo eseguo?

Perché il mio accesso SSH è lento?

Lettura sequenziale lenta del pool ZFS