gitなどのワークロードで適切なNFSパフォーマンスを得るにはどうすればよいですか?


8

vagrantOSXを実行している開発者がVirtualBoxシステムを開発用に管理するためのセットアップを管理しています。

inotifyLinuxマシンの内部をサポートするために、VirtualBoxでディレクトリを共有する通常の方法を避けます。代わりに、VirtualboxマシンはOSXにマウントされているNFS共有を公開します。

Git(およびsourcetreeなどの関連ツール)は、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

2番目のベンチマーク:

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で実行されており、仮想接続よりも理想的と思われます。私は確信しているかどうかではないですstatsdし、lockdTCPやUDP上で実行されています。

async旗とrwsizeブーストでマウントしてみましたが、ほとんど違いがありませんでした。

この環境でNFSのパフォーマンスを真剣に改善する機会はありますか?


現状では問題は解決されていませんが、のAm79C973代わりに別のVirtualboxネットワークインターフェイスを使用することで大幅に軽減しました(最大15倍の改善)virtio。ここでのレッスンは、システムが何をしていたかをより詳しく調べたことです。ある時点まで、ボトルネックは仮想ネットワークのパフォーマンスにあるようです。
Cera 14

同様の問題があります。git statusゲストマシンからの実行には約5秒かかります。OSXであるホストマシンでは、それは速く静かです。私のセットアップは最新のvagrant、vb、共有NFSディレクトリです。インターフェイスをどのように変更しましたか。変更しようとしましたが、まだわかりません。また、これは、いくつかの更新の後でより顕著になりました。最初はこの問題はありませんでした
アリ

回答:



5

この記事には、NFSのパフォーマンスを調整するための役立つヒントが含まれています。

特に、nfsstat -rc「再送信の再試行」が何回行われているかを確認するために使用されます。再試行が多すぎる場合は、nfsdデーモンがスレッドを使い果たしてクライアントの要求にサービスを提供しており、使用可能なスレッドの数を増やす必要があります。

また、VirtualBoxインスタンスがシンプロビジョニングされていないことを確認してください。VirtualBoxのシンプロビジョニングストレージは、書き込みが発生したときにパフォーマンスに大きな影響を与えます。


お返事をありがとうございます。ダイナミックボリュームと固定ボリュームの問題は興味深いものです。パフォーマンスの違いは神話であることを示す読み物をいくつか読んだことがあります。
Cera

それは、基礎となる物理ストレージに大きく依存します...たくさんの空きスペースがある空のパーティション?パフォーマンスへの影響はあまり目立ちません。すでにかなりの数のオブジェクトを含むパーティションですか?VBoxは、OSが空きスペースのブロックを「探し回って」成長の要求を満たすのを待つ必要があります。
pepoluan 2014年

@pepoluan-それは磁気ドライブ、またはSSDでしたか?
analytik 2015

@analytik磁気ドライブ。SSDがあれば、断片化が問題になることはないと思います。シンプロビジョニングされたストレージを安全に使用できます。いや、パフォーマンスヒットがあったとしても、SSDの$ / GBがまだ磁気ドライブよりもかなり高いことを考えると、シンプロビジョニングされます。
pepoluan 2015

0

別の回答では、NFS統計の確認についてすでに言及しています。

VirtualBox vmのさまざまな(仮想)nic構成-さまざまな仮想チップセットとモード(natではなくブリッジモード)を試す価値があるかもしれません。

また、NFSv4を使用した場合は、代わりにNFSv3を試す価値があるかもしれません。これらのバージョンは非常に異なり、これによりパフォーマンスに大きな違いが生じる可能性があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.