Saya mengelola vagrant
pengaturan untuk pengembang kami yang menjalankan OSX untuk mengelola sistem VirtualBox untuk pengembangan.
Untuk mendukung inotify
di 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 statsd
dan lockd
sedang berjalan melalui TCP dan UDP.
Saya mencoba memasang dengan async
bendera, dan dengan rwsize
dorongan, dan itu membuat sedikit perbedaan.
Peluang apa yang ada untuk secara serius meningkatkan kinerja NFS di lingkungan ini?
Am79C973
alih-alihvirtio
. Pelajaran di sini adalah untuk melihat lebih dekat pada apa yang sistem lakukan: ke titik tertentu, hambatan tampaknya menjadi kinerja jaringan virtual.git status
dari 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 awalnyaJawaban:
Cobalah untuk menggunakan pengaturan Git ini, yang membuat perbedaan kinerja yang sangat besar pada saham NFS:
sumber
Artikel ini berisi beberapa tips bermanfaat untuk menyempurnakan kinerja NFS.
Terutama penggunaan
nfsstat -rc
untuk memeriksa berapa banyak 'retries pengiriman ulang' telah terjadi. Jika ada terlalu banyak percobaan, itu berartinfsd
daemon 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.
sumber
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.
sumber