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:sha256
mode 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
sumber
Jawaban:
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.
sumber
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 seperti
arcfour
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?
sumber
rsyncning
dari 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/pics
Lebih baik daripada tidak.Setelah beberapa pengujian lagi, saya akhirnya menemukan jawabannya sendiri.
rsync
menggunakan tunneling over ssh secara default. Crypto membuatnya lambat. Jadi saya perlu menyiasati barang-barang kripto itu.Solusi 1: Menyiapkan server rsync
Untuk menggunakannya melalui
rsync
protokol, Anda harus mengatur server rsyncd. Ada/etc/init.d/rsync
skrip di laptop saya, jadi saya kira, rsyncd sedang berjalan. Saya salah./etc/init.d/rsync start
ada 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-server
di laptop saya. Meminta rsync di workstation dengan-e rexec
kemudian 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.sumber
rsync -e "ssh -c arcfour"
atau mencoba rsync / ssh yang dimodifikasi yang dapat menonaktifkan enkripsi. Lihathpn-ssh
: psc.edu/networking/projects/hpn-sshIni 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:
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.sumber