Bagaimana cara mendapatkan kinerja NFS yang layak untuk beban kerja seperti git?

8

Saya mengelola vagrantpengaturan untuk pengembang kami yang menjalankan OSX untuk mengelola sistem VirtualBox untuk pengembangan.

Untuk mendukung inotifydi dalam mesin linux, kami menghindari metode berbagi direktori yang biasa dengan VirtualBox: sebagai gantinya, mesin Virtualbox memperlihatkan pembagian NFS, yang dipasang di OSX.

Git (dan alat terkait seperti sourcetree) dijalankan di OSX, pada direktori bersama. Performanya sangat buruk: seringkali hanya membutuhkan 5 detik untuk menjalankannya git status. Mengkloning repositori kecil ke drive NFS yang terpasang dapat memakan waktu beberapa menit (5-10 detik pada drive lokal).

Jelas kinerja NFS akan lebih buruk daripada menulis langsung ke SSD lokal, tetapi NFS hanya berjalan di atas antarmuka jaringan pribadi virtual dengan Virtualbox.

Saya menjalankan beberapa tolok ukur. Pertama:

dd if=/dev/zero of=test bs=16 count=16384

Setiap hasil didasarkan pada 100 sampel.

# local drive
Min. 1st Qu.  Median    Mean 3rd Qu.    Max.
0.990   1.000   1.020   1.021   1.030   1.130

# on the shared NFS drive
Min. 1st Qu.  Median    Mean 3rd Qu.    Max.
6.000   6.278   6.390   6.482   6.570   7.630

# inside the VirtualBox instance
Min. 1st Qu.  Median    Mean 3rd Qu.    Max.
0.3600  0.4800  0.5150  0.5552  0.5400  1.4500

Patokan kedua:

ioping -c 500

local avg: 6 microseconds
local IOPS: 65.5 k

NFS Latency avg: 703 microseconds
NFS OPS: 1.4 k

Jelas beberapa latensi tidak dapat dihindari, tetapi ini cukup buruk sehingga membuat beberapa tugas sederhana cukup menyakitkan.

Pemilik volume menjalankan Ubuntu 12.10 (Quantal), dengan pengaturan default. Sistem yang memasang volume menjalankan OSX Mavericks.

Saat ini koneksi nfsd utama berjalan di atas UDP, yang tampaknya ideal melalui koneksi virtual. Saya tidak yakin apakah statsddan lockdsedang berjalan melalui TCP dan UDP.

Saya mencoba memasang dengan asyncbendera, dan dengan rwsizedorongan, dan itu membuat sedikit perbedaan.

Peluang apa yang ada untuk secara serius meningkatkan kinerja NFS di lingkungan ini?

Cera
sumber
Seperti berdiri, masalah belum terpecahkan tetapi kami telah memitigasinya secara substansial (perbaikan hingga 15x) dengan menggunakan antarmuka jaringan Virtualbox yang berbeda: Am79C973alih-alih virtio. Pelajaran di sini adalah untuk melihat lebih dekat pada apa yang sistem lakukan: ke titik tertentu, hambatan tampaknya menjadi kinerja jaringan virtual.
Cera
Saya memiliki masalah serupa. Menjalankan git statusdari mesin tamu membutuhkan waktu sekitar 5 detik. Pada mesin host yang OSX, itu tenang cepat. Setup saya adalah direktori NFS vagrant, vb, shared terbaru. Bagaimana Anda mengubah antarmuka, saya mencoba melakukannya tetapi belum menemukan jawabannya. Juga, ini menjadi lebih berisik setelah beberapa pembaruan. Saya tidak memiliki masalah ini pada awalnya
Ali

Jawaban:

6

Cobalah untuk menggunakan pengaturan Git ini, yang membuat perbedaan kinerja yang sangat besar pada saham NFS:

git config core.preloadindex true
heyyo
sumber
Mengapa itu membuat perbedaan kinerja?
Wildcard
Anda dapat membaca lebih lanjut tentang properti ini di sini: git-scm.com/docs/git-config#git-config-corepreloadIndex
heyyo
5

Artikel ini berisi beberapa tips bermanfaat untuk menyempurnakan kinerja NFS.

Terutama penggunaan nfsstat -rcuntuk memeriksa berapa banyak 'retries pengiriman ulang' telah terjadi. Jika ada terlalu banyak percobaan, itu berarti nfsddaemon kehabisan utas untuk melayani permintaan klien, dan Anda perlu menambah jumlah utas yang tersedia.

Juga, pastikan instance VirtualBox Anda tidak dengan ketentuan yang tipis; tipis penyimpanan yang disediakan di VirtualBox adalah kinerja yang signifikan ketika menulis terjadi.

pepoluan
sumber
Terimakasih atas tanggapan Anda. Hal yang dinamis vs volume tetap menarik - saya melakukan beberapa pembacaan yang menunjukkan bahwa perbedaan kinerja adalah mitos, meskipun jika pengalaman Anda membantu, maka itu mungkin bisa dicoba.
Cera
Ini sangat tergantung pada penyimpanan fisik yang mendasarinya ... partisi kosong dengan jumlah besar ruang kosong? Hit kinerja mungkin kurang terlihat. Partisi dengan objek yang sudah cukup banyak? VBox harus menunggu sementara OS 'berburu' untuk blok ruang kosong untuk memenuhi permintaan pertumbuhan.
pepoluan
@pepoluan - apakah itu dengan drive magnetis, atau SSD?
analytik
@analytik magnetic drive. Dengan SSD, saya pikir fragmentasi tidak akan pernah menjadi masalah, dan Anda dapat dengan aman menggunakan penyimpanan yang disediakan tipis. Heck, bahkan jika ada hit kinerja, mengingat bahwa $ / GB SSD masih jauh lebih tinggi daripada drive magnetik, saya akan kurus disediakan.
pepoluan
0

Jawaban lain sudah menyebutkan memeriksa statistik NFS.

Mungkin ada baiknya mencoba konfigurasi nic yang berbeda (virtual) untuk VirtualBox vm - chipset dan mode virtual yang berbeda (mode bridged bukan nat).

Juga, jika NFSv4 digunakan, mungkin ada baiknya mencoba NFSv3 sebagai gantinya. Versi tersebut sangat berbeda dan ini dapat membuat perbedaan yang signifikan dalam kinerja.

basic6
sumber