2015/04/05

pvSCSI で性能が上がるか?

どこぞの話で突っ込みを入れたときに調べた事を書いておく。

pvSCSI とは vSphere のディスクIOに対する準仮想化ドライバの事で、vSphere がサポートする一部のOSにて利用できる。どのOSで利用できるかは KB 1010398 を参照してほしい。

さて、そこの話、端的に言えば「pvSCSI も LSI Logic もIOPS変わんない」と、暗に pvSCSI を使えないと示唆するようなことだった。

そう、よく勘違いされるが pvSCSI は (vmxnet3 も) ただ「IO性能を上げるもの」ではない。これは pvSCSI の出始めに発表された、このホワイトペーパーを見ればわかる。

英文を読まずとも表だけ見れば LSI Logic と pvSCSI で性能差がほとんどない事に気がつく。
一方、差が出ているのは「CPIO」と呼ばれる項目だ。ドキュメント中に説明があるがこれは「a unit of cycles per I/O」、すなわちそのIOの間にどれだけ CPUが消費されたか、になる。

考えてみれば当たり前の話だ。pvSCSI でも LSI Logic でも、仮想環境上のメモリに存在するデータを、VMkernel に渡して実際のストレージIOにする部分に大きな差はない。異なるのはそのためにLSI Logic という実際のハードウェアの手順をエミュレートするのか、そういう細かいところを省くか、だけになる。LSI Logic のデバイスドライバをそのまま使えるようにするという手間が省ける分、CPUサイクルが削減され、CPU負荷が下がる、というのが pvSCSI の本質だ。

結果として IOしている間のCPU負荷が下がる。

これは IOPS をはかるベンチマークではあまり意味をなさないが、CPUがそれだけあいているという事はアプリケーションがさらに演算を行ったり、pvSCSI以外のデバイスに対するIOを行うだけの余地が増える。ワークロードのスループット全体を見れば、向上が行われる、という次第だ。

ベンチマークの結果値だけを見ているとこうした事はわからない。
数字の多寡を気にするのではなく、システム全体を俯瞰し、それがどういう位置づけになるかを忘れない事だ。