FreeBSDシステムでのNFSパフォーマンスの向上

FreeBSDシステムでのNFSパフォーマンスの向上

NFS を介して ZFS データセットをエクスポートする FreeBSD ストレージサーバーがありますが、小さいファイル転送パフォーマンスが許容範囲より低くなります。

いくつかの背景情報:

  1. エクスポートは、ZFSのsharenfs属性を介さずに/ etc / exportsを介して処理されます。
  2. サーバーには128GBのRAMと2x8コアCPUがあります。
  3. NFSサーバーは、192個のスレッド(vfs.nfsd.maxthreads:192)を使用するように構成されています。
  4. zpoolは、SSDをSLOGとして使用する4x4TB 10,000rpm SAS HDDをサポートします.
  5. 私はいつも次のパラメータを使ってfioを使ってシステムパフォーマンスをテストしました。

    fio --ioengine=posixaio --bs=4k --directory=/mountpoint --refill_buffers --iodepth=1 --file_service_type=sequential --create_on_open=1 --fallocate=0 --unlink=1 --name=benchmark1 --rw=randwrite --numjobs=1 --nrfiles=500000 --filesize=20KB

テスト地元のサーバーの書き込み速度は約です。55MB/秒

同じワークロードテストNFS経由わずかなパフォーマンスのみが表示されます。6000KB/秒。クライアントのマウントオプションは次のとおりです。

myserver:/export/path on /mnt/tmp type nfs4 (rw,relatime,vers=4.1,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=clientip,local_lock=none,addr=serverip)

また、ネットワークの制限を確認するために、単一の大容量ファイルへの順次書き込みをテストしました。このワークロードでは、123MB/s が得られました。これは、NFS クライアントがギガビット イーサネットに制限されているためです。

また、NFS(vfs.nfsd.async = 1)とZFS(zfs setsync = disabled / myzpool / dataset)で同期書き込みを無効にした状態でパフォーマンスを測定しました。同期書き込みがないと、6000ではなく9000kB / sが得られます。これはまだ受け入れられない数値です。

建物の特定のルーター/スイッチにアクセスできないため、1500を超えるMTUを使用できません。

ベストアンサー1

  1. NFS 読み書きバッファサイズを大きくする
    sudo mount -o remount,rsize=262144,wsize=262144 myserver:/export/path /mnt/tmp
    
  2. NFSスレッド数の調整
    sudo sysctl -w vfs.nfsd.maxthreads=256
    
  3. ZFS設定の最適化
    sudo zfs set recordsize=4K myzpool/dataset
    

おすすめ記事