Mengapa rsync saya sangat lambat?

42

Laptop dan workstation saya keduanya terhubung ke Gigabit Switch. Keduanya menjalankan Linux. Tetapi ketika saya menyalin file rsync, kinerjanya buruk.

Saya mendapatkan sekitar 22 MB / s. Bukankah seharusnya saya mendapatkan sekitar 125 MB / s secara teoritis? Apa faktor pembatas di sini?

EDIT: Saya melakukan beberapa percobaan.

Tulis kinerja di laptop

Laptop ini memiliki sistem file xfs dengan enkripsi disk penuh. Ini menggunakan aes-cbc-essiv:sha256mode sandi dengan panjang kunci 256 bit. Kinerja penulisan disk adalah 58,8 MB / s .

iblue@nerdpol:~$ LANG=C dd if=/dev/zero of=test.img bs=1M count=1024
1073741824 Bytes (1.1 GB) copied, 18.2735 s, 58.8 MB/s

Baca kinerja di workstation

File yang saya salin ada pada perangkat lunak RAID-5 lebih dari 5 HDD. Di atas serangan itu adalah lvm. Volume itu sendiri dienkripsi dengan sandi yang sama. Workstation ini memiliki cpu FX-8150 yang memiliki set instruksi AES-NI asli yang mempercepat enkripsi. Kinerja membaca disk adalah 256 MB / s (cache dingin).

iblue@raven:/mnt/bytemachine/imgs$ dd if=backup-1333796266.tar.bz2 of=/dev/null bs=1M
10213172008 bytes (10 GB) copied, 39.8882 s, 256 MB/s

Performa jaringan

Saya menjalankan iperf di antara kedua klien. Kinerja jaringan adalah 939 Mbit / s

iblue@raven $ iperf -c 94.135.XXX
------------------------------------------------------------
Client connecting to 94.135.XXX, TCP port 5001
TCP window size: 23.2 KByte (default)
------------------------------------------------------------
[  3] local 94.135.XXX port 59385 connected with 94.135.YYY port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  1.09 GBytes   939 Mbits/sec
iblue
sumber
3
rsync: // protokol atau tunneling melalui SSH? Ada keterbatasan kinerja yang sangat pasti di kedua ¹ .
ephemient

Jawaban:

18

Cara lain untuk mengurangi penggunaan CPU yang tinggi tetapi tetap mempertahankan fungsi rsync, adalah dengan berpindah dari rsync / SSH ke rsync / NFS. Anda bisa mengekspor jalur yang ingin Anda salin dari melalui NFS dan kemudian menggunakan rsync secara lokal dari mount NFS ke lokasi tujuan Anda.

Dalam satu pengujian dari disk jaringan WD MyBook Live, satu atau lebih rsyncs dari NAS pada jaringan Gigabit menuju 2 disk USB lokal tidak akan menyalin lebih dari 10MB / detik (CPU: 80% usr, 20% sys), setelah mengekspor lebih dari NFS dan rsyncing secara lokal dari berbagi NFS ke kedua disk saya mendapat total 45MB / detik (maxing kedua USB2 disk) dan sedikit penggunaan CPU. Pemanfaatan disk ketika menggunakan rsync / SSH adalah sekitar 6% dan menggunakan rsync / NFS lebih dekat ke 24%, sedangkan kedua disk USB2 di mana mendekati 100%.

Jadi kami secara efektif memindahkan hambatan dari NAS CPU ke kedua disk USB2.

Dag Wieers
sumber
4
Namun, berhati-hatilah bahwa NFS tidak menawarkan keamanan (yaitu: enkripsi).
WhyNotHugo
Ini bekerja dengan baik! Sekarang mendapatkan kecepatan hampir penuh gigabit ketika saya hanya mendapatkan ~ 100 Mb / s sebelumnya.
PHLAK
1
Bisakah Anda menunjukkan cara menggunakan rsync / NFS? Saya mencoba mentransfer 8Tb antara 2 drive MyCloud dan butuh selamanya dengan rsync over ssh (4MB / detik)
FMaz008
26

Alasannya termasuk: kompresi, enkripsi, jumlah dan ukuran file yang sedang disalin, kemampuan I / O disk sistem sumber dan tujuan Anda, overhead TCP ... Ini semua adalah faktor yang dapat mempengaruhi jenis transfer yang Anda lakukan.

Silakan kirim perintah rsync yang Anda gunakan dan berikan detail pada spesifikasi kedua komputer.


Sunting: Enkripsi sering menjadi faktor pembatas dalam kecepatan rsync. Anda dapat menjalankan dengan ssh dan cipher enkripsi yang lebih ringan sepertiarcfour

Sesuatu seperti: rsync -e "ssh -c arcfour"

Atau Anda dapat menggunakan rsync / ssh yang dimodifikasi yang dapat menonaktifkan enkripsi. Lihat hpn-ssh: http://psc.edu/networking/projects/hpn-ssh

Tetapi sekali lagi, laptop Anda memiliki drive yang lambat dibandingkan dengan workstation Anda. Menulis dapat diblokir dan menunggu I / O pergi ke laptop Anda. Apa harapan kinerja Anda yang sebenarnya?

putih
sumber
1
Laptop sering memiliki disk yang lebih lambat (7200 rpm - 5400 rpm) karena mereka menggunakan daya yang lebih kecil. Ini bisa dengan mudah menjadi faktor pembatas Anda tergantung pada apa yang dilakukan rsync.
Ladadadada
1
Terima kasih. Karena rsyncningdari disk terenkripsi dm-crypt yang terpasang pada pemroses atom ke kotak ARM NAS ecryptfs , ini mengubah kecepatan transfer saya dari 4MiB / dtk menjadi 6MiB / dtk. rsync --protocol=29 -auh --progress /mnt/esata/pics/ -e "ssh -c arcfour" diskstation:/volume1/picsLebih baik daripada tidak.
Sebastian
Jawaban ini. Beralih dari rsync -azP ke rsync -aPe "ssh -c arcfour" meningkatkan kecepatan transfer dari 4MB / Detik ke 25MB / Detik antara dua drive MyCloud Mirror. Unit penerima CPU sekarang sudah maksimal. (pikir ini berarti saya mentransfer secepat unit dapat menulis data)
FMaz008
10

Setelah beberapa pengujian lagi, saya akhirnya menemukan jawabannya sendiri. rsyncmenggunakan tunneling over ssh secara default. Crypto membuatnya lambat. Jadi saya perlu menyiasati barang-barang kripto itu.

Solusi 1: Menyiapkan server rsync

Untuk menggunakannya melalui rsyncprotokol, Anda harus mengatur server rsyncd. Ada /etc/init.d/rsyncskrip di laptop saya, jadi saya kira, rsyncd sedang berjalan. Saya salah. /etc/init.d/rsync startada secara diam-diam, ketika rsync tidak diaktifkan di /etc/default/rsync. Maka Anda juga harus mengkonfigurasinya /etc/rsyncd.conf, yang merupakan rasa sakit.

Jika semua ini selesai, Anda harus menggunakannya rsync file.foo user@machine::directory. Harap dicatat, bahwa ada dua titik dua .

Solusi 2: Old-school rsh-server

Namun, konfigurasi itu terlalu rumit bagi saya. Jadi saya baru saja menginstal dan rsh-serverdi laptop saya. Meminta rsync di workstation dengan -e rexeckemudian menggunakan rsh, bukan ssh. Yang kemudian hampir menggandakan kinerja menjadi 44,6 MB / s , yang masih lambat. Kecepatan memantul antara 58 MB / s dan 33 MB / s , yang menunjukkan mungkin ada beberapa masalah buffer atau kontrol kemacetan. Tapi itu di luar cakupan pertanyaan ini.

iblue
sumber
2
Kami menggunakan rsync secara ekstensif di sini dan biasanya mendapatkan kecepatan antarmuka penuh kecuali melewati jutaan file 4K. Saya tidak berpikir crypto adalah masalahnya kecuali jika Anda menggunakan beberapa perangkat keras yang benar-benar tua.
Magellan
Apakah Intel Core2 Duo T8100 dalam ThinkPad R61 dianggap sebagai perangkat keras yang benar-benar usang? Jika tidak, mengapa rsync lebih dari ssh lebih lambat daripada rsync atas rsh?
iblue
5
Enkripsi sering menjadi faktor pembatas dalam kecepatan rsync, bersama dengan jumlah file. Pendekatan standar untuk meningkatkan ini adalah menjalankan rsync dengan cipher enkripsi yang lebih ringan seperti rsync -e "ssh -c arcfour"atau mencoba rsync / ssh yang dimodifikasi yang dapat menonaktifkan enkripsi. Lihat hpn-ssh: psc.edu/networking/projects/hpn-ssh
ewwhite
2

Ini adalah pertanyaan dan jawaban yang sangat lama, tetapi satu hal penting yang hilang: jika Anda menyalin data yang sudah dikompresi atau dienkripsi, matikan kompresi.

Jika data Anda tidak dikompresi atau dienkripsi, Anda masih hanya ingin mengompresnya sekali! Rsync kompres dengan -z, kompres ssh dengan -C (mungkin secara default). Saya belum menguji mana yang lebih baik karena data saya dikompresi.

Sementara saya melakukannya, Anda dapat mematikan penerusan X dan alokasi TTY, menghasilkan:

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

Terakhir, pastikan (misalnya menggunakan iptraf) bahwa Anda benar-benar menggunakan antarmuka jaringan yang Anda pikir Anda gunakan. Saya harus sangat terkejut mencatat bahwa pada OSX saya ssh keluar mengikat ke IP pada antarmuka keluar default bukan ke IP pada antarmuka paket-paket yang seharusnya diarahkan keluar. Sambungan langsung GB saya antara dua laptop yang juga terhubung dengan WiFi tidak digunakan. Setelah diselidiki, itu karena menggunakan 169.254 / 16, yang digunakan Mac pada semua antarmuka, dan komputer tujuan membalas permintaan ARP meskipun permintaan masuk pada antarmuka yang berbeda.

Hukum29
sumber
Opsi yang valid, tetapi saya menemukan bahwa -x -T dan -o Compression = tidak hanya memiliki sedikit efek pada kecepatan transfer.
FMaz008
4
Perlu juga disebutkan bahwa OpenSSH 6.7 menonaktifkan arcfour.
bparker
Sayang sekali @bparker! Apakah kita tahu mana dari cipher yang tersisa yang paling ringan pada CPU?
Law29