NFS を介して ZFS データセットをエクスポートする FreeBSD ストレージサーバーがありますが、小さいファイル転送パフォーマンスが許容範囲より低くなります。
いくつかの背景情報:
- エクスポートは、ZFSのsharenfs属性を介さずに/ etc / exportsを介して処理されます。
- サーバーには128GBのRAMと2x8コアCPUがあります。
- NFSサーバーは、192個のスレッド(vfs.nfsd.maxthreads:192)を使用するように構成されています。
- zpoolは、SSDをSLOGとして使用する4x4TB 10,000rpm SAS HDDをサポートします.
私はいつも次のパラメータを使って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
- NFS 読み書きバッファサイズを大きくする
sudo mount -o remount,rsize=262144,wsize=262144 myserver:/export/path /mnt/tmp
- NFSスレッド数の調整
sudo sysctl -w vfs.nfsd.maxthreads=256
- ZFS設定の最適化
sudo zfs set recordsize=4K myzpool/dataset