Tôi quản lý một vagrant
thiết lập cho các nhà phát triển của chúng tôi chạy OSX để quản lý các hệ thống VirtualBox để phát triển.
Để hỗ trợ inotify
bên trong máy linux, chúng tôi tránh sử dụng phương pháp chia sẻ thư mục thông thường với VirtualBox: thay vào đó, máy Virtualbox hiển thị chia sẻ NFS, được gắn trong OSX.
Git (và các công cụ liên quan như sourcetree) được chạy trong OSX, trên thư mục dùng chung. Hiệu suất của việc này cực kỳ kém: thường chỉ mất tới 5 giây để chạy git status
. Nhân bản một kho lưu trữ nhỏ vào ổ NFS được gắn có thể mất vài phút (5-10 giây trên ổ đĩa cục bộ).
Rõ ràng hiệu năng của NFS sẽ kém hơn so với việc ghi thẳng vào ổ SSD cục bộ, nhưng NFS chỉ chạy trên giao diện mạng riêng ảo với Virtualbox.
Tôi chạy một vài điểm chuẩn. Thứ nhất:
dd if=/dev/zero of=test bs=16 count=16384
Mỗi kết quả được dựa trên 100 mẫu.
# 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
Điểm chuẩn thứ hai:
ioping -c 500
local avg: 6 microseconds
local IOPS: 65.5 k
NFS Latency avg: 703 microseconds
NFS OPS: 1.4 k
Rõ ràng một số độ trễ là không thể tránh khỏi, nhưng điều này đủ tệ đến mức nó làm cho một số nhiệm vụ đơn giản khá đau đớn.
Chủ sở hữu của ổ đĩa đang chạy Ubuntu 12.10 (Định lượng), với cài đặt mặc định. Hệ thống gắn âm lượng đang chạy OSX Mavericks.
Hiện tại, kết nối nfsd chính đang chạy trên UDP, có vẻ lý tưởng hơn kết nối ảo. Tôi không chắc liệu có statsd
và lockd
đang chạy trên TCP và UDP hay không.
Tôi đã thử gắn với async
cờ, và với rwsize
tăng cường, và nó đã tạo ra một chút khác biệt.
Cơ hội nào để cải thiện nghiêm túc hiệu suất của NFS trong môi trường này?
git status
từ máy khách mất khoảng 5 giây. Trên máy chủ là OSX, nó hoạt động rất nhanh. Thiết lập của tôi là thư mục NFS mới nhất, vb, chia sẻ. Làm thế nào bạn thay đổi giao diện, tôi đã cố gắng để làm như vậy nhưng không tìm ra điều này. Ngoài ra, điều này trở nên đáng chú ý hơn sau một số cập nhật. Tôi đã không có vấn đề này ngay từ đầu
Am79C973
thay vìvirtio
. Bài học ở đây là đã xem xét kỹ hơn những gì các hệ thống đang làm: đến một điểm nào đó, nút cổ chai dường như là hiệu suất mạng ảo.