rsync sangat lambat (faktor 8 hingga 10) dibandingkan dengan cp pada menyalin file dari nfs-share ke dir lokal

17

Saya memiliki server Ubuntu yang baru diinstal yang seharusnya menjadi server cadangan baru untuk penyimpanan VM kami. Server memiliki 4 Nics, 2 di antaranya 10Gbit (sebenarnya sebuah intel x540-T2 dengan driver terbaru yang tersedia) yang digunakan untuk terhubung ke SAN. Saya memiliki nfs-share yang dipasang secara lokal dan membandingkan perbedaan kecepatan saat menyalin direktori dengan ~ 30 file, sekitar 15 vm-gambar dan file log yang sesuai. Gambar berukuran antara 8 GB dan 600 GB.

Menggunakan:

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

Bmon menunjukkan konsekuensinya sekitar 600 MiB / s

Menggunakan

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

bmon menunjukkan beberapa paket pada detik pertama, berhenti sekitar 30 detik dan kemudian bertambah hingga sekitar 60-75 MiB / s. CPU sekitar 60%.

Apa yang harus / bisa saya ubah untuk digunakan rsyncdengan kinerja yang sama cp?

jalur jiwa
sumber

Jawaban:

20

Saya pikir perbedaan ini cukup mapan antara cpdan rsync. Lihat artikel ini sebagai referensi, berjudul: Melihat kinerja rsync .

kutipan:
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

Saya menggunakan rsyncsetiap hari. Ada hal yang dapat Anda lakukan untuk memperbaiki situasi.

Misalnya, Anda dapat mencoba menggunakan -Wsakelar:

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

Juga saya akan menyarankan memastikan Anda memiliki 3.x versi rsync. Ada peningkatan nyata ketika kami pindah ke versi yang lebih baru.

slm
sumber
15

Cara untuk membuat rsync memiliki kinerja yang sama dengan cp adalah mengejanya "cp".

Perbedaan antara kedua perintah ini signifikan meskipun efek bersihnya mungkin sama. Secara khusus, rsync melakukan banyak pembacaan untuk melihat apakah beberapa file atau bagian dari suatu file harus disalin.

Apakah ada alasan mengapa Anda ingin menggunakan rsync? Karena salinan cp "secara membabi buta" Anda akan melihat kinerja mentah yang lebih tinggi. Jika, untuk satu set kondisi pemicu, mekanisme "delta-transfer" rsync digunakan, Anda akan melihat penurunan kecepatan transfer dan penggunaan CPU meningkat cukup banyak seperti yang Anda laporkan.

msw
sumber
Saya menyadari perilaku tersebut, tetapi tidak mengharapkan efek seperti itu. Saya pikir, mengingat CPU-Power dan IOPS rsync harus berkinerja setidaknya 300 MiB / s, terutama jika file yang akan disalin tidak ada. Saya belum menyelesaikan pengujian. Cadangan dengan rsync akan lebih nyaman, tetapi saya juga dapat menulis skrip menggunakan cp, dd atau apa pun yang terlintas dalam pikiran. Sekarang saya ingin menguji berbagai kemungkinan pada sistem file yang berbeda untuk mengevaluasi mana yang paling cocok.
soulpath
6
Anda bisa menyebut saya seorang empiris, tetapi ketika harapan dan kenyataan Anda tidak setuju, biasanya bukan realitas yang keliru. Ada selusin alasan mengapa Anda bisa dikenai penalti ini; bahkan interleaving membaca dan menulis di SAN dapat memiliki hit kinerja yang dramatis tergantung pada detail perangkat lunak.
msw
3
Saya tidak ragu tentang kenyataan, hanya tentang rsync- tetapi karena perbedaan-perbedaan ini saya akan pergi dengan menulis naskah menggunakan cp dan beberapa checksum. Terima kasih atas saranmu!
soulpath
Tidak, hanya saja jangan gunakan rsync pada sistem file jaringan. Komputer Anda perlu mengunduh seluruh file, sehingga Anda kehilangan semua keunggulan rsync.
Giacomo Catenazzi
Sayangnya jawaban ini salah dalam detailnya. Ketika menyalin antara sistem file "lokal" (dan ya, NFS mount adalah sistem file lokal dalam konteks ini), rsync tidak membaca file target ketika menyalin kecuali jika Anda secara eksplisit mengaktifkan operasi kontraproduktif ini dengannya --whole-file. Dalam situasi ini seperti sangat lambat cp.
roaima