git과 같은 워크로드에 알맞은 NFS 성능을 얻는 방법은 무엇입니까?


8

vagrant개발을 위해 VirtualBox 시스템을 관리하기 위해 OSX를 실행하는 개발자를위한 설정을 관리합니다 .

inotifyLinux 시스템 내부 를 지원하기 위해 VirtualBox와 디렉토리를 공유하는 일반적인 방법을 피하십시오. 대신 Virtualbox 시스템은 OSX에 마운트 된 NFS 공유를 노출합니다.

Git (및 소스 트리와 같은 관련 도구)은 OSX의 공유 디렉토리에서 실행됩니다. 이것의 성능은 매우 열악합니다. 종종 실행하는 데 최대 5 초가 걸립니다 git status. 작은 저장소를 마운트 된 NFS 드라이브에 복제하는 데 몇 분 (로컬 드라이브에서 5-10 초)이 걸릴 수 있습니다.

분명히 NFS 성능은 로컬 SSD에 직접 쓰는 것보다 좋지 않지만 NFS는 Virtualbox와의 가상 사설 네트워크 인터페이스를 통해 실행되고 있습니다.

몇 가지 벤치 마크를 실행했습니다. 첫번째:

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

각 결과는 100 개의 샘플을 기반으로합니다.

# 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

두 번째 벤치 마크 :

ioping -c 500

local avg: 6 microseconds
local IOPS: 65.5 k

NFS Latency avg: 703 microseconds
NFS OPS: 1.4 k

분명히 약간의 대기 시간은 불가피하지만 이것은 간단한 작업을 상당히 고통스럽게 만들기에 충분하지 않습니다.

볼륨 소유자가 기본 설정으로 Ubuntu 12.10 (Quantal)을 실행 중입니다. 볼륨을 마운트하는 시스템이 OSX Mavericks를 실행 중입니다.

현재 주요 nfsd 연결은 UDP를 통해 실행되고 있으며 이는 가상 연결보다 이상적입니다. 나는인지 확실하지 않다 statsdlockdTCP와 UDP를 통해 실행된다.

나는 async깃발로 장착을 시도했지만 rwsize부스트 와 함께 거의 차이가 없었습니다.

이 환경에서 NFS의 성능을 크게 향상시킬 수있는 기회는 무엇입니까?


약자로, 다른 버추얼 네트워크 인터페이스를 사용하여 (최대 15 배의 개선) 문제가 해결되지 않았하지만 우리는 실질적으로 완화했습니다 Am79C973대신 virtio. 여기서 교훈은 시스템이 수행하고있는 작업을보다 자세히 살펴 보는 것입니다. 특정 시점에서 병목 현상은 가상 네트워크 성능 인 것으로 보입니다.
Cera

비슷한 문제가 있습니다. git status게스트 컴퓨터에서 실행 하는 데 약 5 초가 걸립니다. OSX 인 호스트 시스템에서는 조용히 빠릅니다. 내 설정은 최신 버전의 vb, 공유 NFS 디렉토리입니다. 인터페이스를 어떻게 변경 했습니까? 그러려고했지만 이것을 이해하지 못했습니다. 또한 일부 업데이트 후 더 눈에 띄게되었습니다. 처음에는이 문제가 없었습니다
Ali

답변:



5

이 기사 에는 NFS 성능을 조정하는 유용한 팁 포함되어 있습니다.

특히 nfsstat -rc재전송 재시도 횟수를 확인하는 데 사용 합니다. 재 시도가 너무 많으면 nfsd클라이언트 요청을 처리하기 위해 데몬에 스레드가 부족한 것이므로 사용 가능한 스레드 수를 늘려야합니다.

또한 VirtualBox 인스턴스가 씬 프로비저닝되지 않아야합니다. VirtualBox의 씬 프로비저닝 스토리지 는 쓰기가 발생할 때 성능이 크게 저하됩니다.


답변 주셔서 감사합니다. 동적 대 고정 볼륨 문제는 흥미 롭습니다. 성능 차이가 신화임을 나타내는 몇 가지 독서를했지만 경험이 도움이된다면 시도가 될 수 있습니다.
Cera

여유 공간이 많은 빈 파티션입니까? 성능 저하가 눈에 띄지 않을 수 있습니다. 이미 많은 객체가있는 파티션? VBox는 OS가 증가 요청을 이행하기 위해 빈 공간 블록을 찾기 위해 대기하는 동안 기다려야합니다.
pepoluan

@pepoluan-마그네틱 드라이브 또는 SSD입니까?
analytik

@analytik 자기 드라이브. SSD를 사용하면 조각화가 결코 문제가되지 않으며 씬 프로비저닝 된 스토리지를 안전하게 사용할 수 있습니다. 비록 성능 저하가 발생하더라도 SSD의 $ / GB가 여전히 마그네틱 드라이브보다 훨씬 높다는 점을 고려하면 씬 프로비저닝을 진행할 것입니다.
pepoluan

0

또 다른 대답은 이미 NFS 통계 확인에 대해 언급하고 있습니다.

VirtualBox vm에 대해 서로 다른 (가상) nic 구성을 시도해보십시오-다른 가상 칩셋 및 모드 (nat 대신 브리지 모드).

또한 NFSv4가 사용 된 경우 대신 NFSv3을 사용해 보는 것이 좋습니다. 이러한 버전은 매우 다르므로 성능에 큰 차이가있을 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.