web-dev-qa-db-ja.com

KVM + NFSの不十分なディスクパフォ​​ーマンス

状況:KVMを使用して3つのVMをホストするUbuntuサーバーがあります。すべてのゲストとホストは、/ varの特定のサブフォルダーにある同じファイルにアクセスする必要があります。したがって、サブフォルダーはNFS経由でエクスポートされます。私たちの問題は、ゲストがホストの半分の速度でディレクトリに対して読み書きできることです。エクスポートテーブルは次のようになります

alice@Host:~$ cat /etc/exports
/home/videos 192.168.10.0/24(rw,sync,no_root_squash)

ここで、ホストのIPは192.168.10.2で、VMは192.168.10.1 {1..3}です。/home/videosは、/ var内の特定のサブフォルダーへのシンボリックリンクです。特に、それは/ var/videos/genvidsです。

これは、VMのfstabからの関連する行です。

192.168.10.2:/home/videos /mnt/nfs nfs auto,noatime,rsize=4096,wsize=4096  0 0

ハードディスクの持続データレートは約155MB/sであり、hdparm-tTおよびddの出力によって検証されます。

alice@Host:~$ dd if=/home/videos/4987_1359358478.mp4 of=/dev/null bs=1024k count=300
300+0 records in
300+0 records out
314572800 bytes (315 MB) copied, 2.04579 s, 154 MB/s

VM内では、物事は異なって見えます:

bob@guest:~$ dd if=/mnt/nfs/4959_3184629068.mp4 of=/dev/null bs=1024k count=300
300+0 records in
300+0 records out
314572800 bytes (315 MB) copied, 4.60858 s, 68.3 MB/

ブロックサイズをファイルシステムのページサイズに合わせると、満足できる効果はありませんでした。

bob@guest:~$ dd if=/mnt/nfs/4925_1385624470.mp4 of=/dev/null bs=4096 count=100000
100000+0 records in
100000+0 records out
409600000 bytes (410 MB) copied, 5.77247 s, 71.0 MB/s

私は、NFSパフォーマンスに関するさまざまなページ、最も関連する NFS FAQs パートB、およびそれぞれの パフォーマンスチューニング Howtoを調べました。ほとんどのヒントは適用されません。他のものは結果を改善しませんでした。 そこありスレッドここ ディスクパフォ​​ーマンスとKVMを扱います。ただし、NFSの側面はカバーしていません。 This スレッドはそうですが、私たちの場合、ネットワーク速度は制限要因ではないようです。

全体像を示すために、これは、シンボリックリンクが解決され、すべてのアクティブなエクスポートオプションが表示されたエクスポートetabのコンテンツです。

alice@Host:~$ cat /var/lib/nfs/etab
/var/videos/genvids 192.168.10.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,
no_root_squash,no_all_squash,no_subtree_check,secure_locks,acl,
anonuid=65534,anongid=65534)

この文脈で私を悩ませているのは-そして私が理解していないのは-nfsdのprocfile出力です:

alice@Host:~$ cat /proc/net/rpc/nfsd
...
th 8 0 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
...

3番目以降の列では、VM内のディスクから読み取った後、ゼロ以外の値を期待していました。ただし、nfsstatは、実際に読み取り操作があったことを示しています。

alice@Host:~$ nfsstat
...
Server nfs v3:
null         getattr      ...
9     0%     15106     3% ...
read         write        ...
411971   95% 118       0% ...
...

そのため、トピックは非常に複雑で、他にどこを見ればよいか、またはこれに対する簡単な解決策があるかどうかを知りたいと思います。

3
betastrahler

結局のところ、問題は予想よりも簡単に解決できました。 VMのfstabでrsizeおよびwsizeオプションを調整するとうまくいきました。それぞれの行は

192.168.10.2:/home/videos /mnt/nfs nfs auto,noatime,rsize=32768,wsize=32768  0 0

rsizeおよびwsizeの値がディスクのブロックサイズ(4096)を満たし、NICのMTU(9000)以下の場合に最高のパフォーマンスを期待していたため、これは明らかではありませんでした。 )。どうやら、この仮定は間違っていました。

正確な持続ディスクデータレートはファイルそのものに依存することに注意してください。サイズ9GBの2つの同様のファイルについて、155 MB/s(ファイル1)から140 MB/s(ファイル2)のレートが観察されました。したがって、1つのファイルでデータレートを下げても、別のファイルでフルデータレートになる場合があります。

4
betastrahler