Làm thế nào để có được hiệu suất NFS tốt cho khối lượng công việc như git?


8

Tôi quản lý một vagrantthiế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ợ inotifybê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ó statsdlockdđang chạy trên TCP và UDP hay không.

Tôi đã thử gắn với asynccờ, và với rwsizetă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?


Vì thế, vấn đề chưa được giải quyết nhưng chúng tôi đã giảm thiểu đáng kể (cải thiện tới 15 lần) bằng cách sử dụng giao diện mạng Virtualbox khác: Am79C973thay 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.
Cera

Tôi có một vấn đề tương tự. Chạy git statustừ 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
Ali

Câu trả lời:



5

Bài viết này chứa một số mẹo hữu ích để điều chỉnh hiệu suất NFS.

Đặc biệt là việc sử dụng nfsstat -rcđể kiểm tra xem có bao nhiêu lần 'thử lại truyền lại' đã xảy ra. Nếu có quá nhiều lần thử lại, điều đó có nghĩa là nfsddaemon hết luồng cho các yêu cầu của khách hàng dịch vụ và bạn cần tăng số lượng luồng có sẵn.

Ngoài ra, đảm bảo rằng phiên bản VirtualBox của bạn không được cung cấp mỏng; lưu trữ được cung cấp mỏng trên VirtualBox là một thành tích đáng kể khi ghi xảy ra.


Cám ơn phản hồi của bạn. Điều năng động so với âm lượng cố định rất thú vị - Tôi đã đọc một số chỉ ra rằng sự khác biệt hiệu suất là một huyền thoại, mặc dù nếu kinh nghiệm của bạn là nó có ích thì đó có thể là một thử.
Cera

Nó phụ thuộc rất nhiều vào bộ lưu trữ vật lý cơ bản ... một phân vùng trống với vô số dung lượng trống? Các hit hiệu suất có thể ít được chú ý. Một phân vùng với khá nhiều đối tượng đã có? VBox sẽ phải chờ trong khi HĐH 'săn lùng' các khối không gian trống để thực hiện yêu cầu tăng trưởng.
pepoluan

@pepoluan - đó là với một ổ đĩa từ tính, hay SSD?
analytik

@analytik ổ đĩa từ. Với SSD, tôi nghĩ rằng việc phân mảnh sẽ không bao giờ là vấn đề và bạn có thể đi một cách an toàn với bộ nhớ được cung cấp mỏng. Heck, ngay cả khi có một hiệu suất đạt được, vì rằng SSD / GB vẫn còn cao hơn ổ đĩa từ, tôi sẽ được cung cấp mỏng.
pepoluan

0

Một câu trả lời khác đã đề cập đến việc kiểm tra số liệu thống kê NFS.

Có thể đáng để thử các cấu hình nic (ảo) khác nhau cho VirtualBox vm - các chipset và chế độ ảo khác nhau (chế độ bắc cầu thay vì nat).

Ngoài ra, nếu NFSv4 được sử dụng, có thể đáng để thử NFSv3 thay thế. Những phiên bản này rất khác nhau và điều này có thể tạo ra sự khác biệt đáng kể về hiệu suất.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.