FreeNASのNFSをProxmoxで利用したときのパフォーマンス

環境

  • FreeNAS
    • HDD WD RED 2TB x3 RAID-Z
    • NFS
    • sync=disable
  • Proxmox
    • Windows10をインストール済み
  • Network
    • 10GbE

症状

ProxmoxからFreeNASへNFSで接続し、Windowsを入れる。
このとき、Proxmox側のディスクドライブはIDE0
この状態でCrystalDiskMarkをかけた結果が以下

HDDはWD REDだし、RAID-Zとはいえ、Read/Writeともにほぼ同じ速度で頭打ちなのはおかしい。
FreeNAS側でも、CPUやメモリが張り付く様子もなく、他のNFSで同じように測定されている方の結果からも、FreeNAS側の問題ではないと判断。

作業

結論から言うと、Proxmox上のWindowsのディスクを、IDE0からSCSI0にした。
この辺は、VirtIOのドライバを入れたりしないといけないので、別途作業が必要。
これがちょっと面倒である。

結果

Proxmox上のWindowsのディスクをSCSI0にして、再度CrystalDiskMarkで計測した結果が以下である。

めちゃめちゃ早くなった。

Readに関しては、CrystalDiskMarkの性質上、テスト前に書き込んだテスト用データがFreeNASのNFSボリューム上のキャッシュにあり、キャッシュから読み出したものだと思われる。
しかしながら、Writeに関しては、ディスクから直接読み込んでいると思われる数値が出ている。
結果として大幅な速度向上に成功した。

余談

これはあくまでも推察なので、事実と異なるかもしれないが、CrystalDiskMarkがディスクのベンチマークを行う際、以下の順序で実行されているように思う。

  • 1,テスト用データを書き込み(Prepare)
  • 2,テスト用データを読み込む(ReadTest)
  • 3,テスト用データを書き込み(WriteTest)
  • 4,残ったゴミを削除

この手順だと、テストデータを2回書き込む必要があると考えられる。
以下の処理順序にすれば、効率よくベンチマークが行えないだろうか?

  • 1,テスト用データを書き込み(WriteTest)
  • 2,テスト用データを読み込む(ReadTest)
  • 3,残ったゴミを削除

この順序だと、書き込みや読み込み処理が1度で済むと考えられる。
当然、何か理由があって、現状の処理順序になっていると考えられるが、それが自身には分からないので、誰かご教示願いたい。