仮想化でプリセールスしてるSEの一日

VMware から Azure まで、インフラや仮想化の最新情報をベンダー色をできるだけ抑えて綴っていきます

VDI で何故か性能が出ない!? 意外な確認ポイント

2年間で 50 社近くのお客様に VDI 導入を支援させていただきました。
私はプリセールスですので、実際の SI・構築作業は別の担当者に引き継ぐのですが、I/O 含めて
精度高くサイジングしたにもかかわらず、

  • 「何かワンテンポ遅い」
  • 「ファイルを開くのに 10 秒以上掛かる」

みたいな問題が結構相次いでいます。ボトルネックになりやすい Disk や Network をログ分析しても Busy ではないし、CPU RDY も問題ない。。。
経験上、原因不明なパフォーマンス問題の多くは次が原因です。
特に、設置作業・初期構築を分業した場合はチェックしてみると良いと思います。


VDI ではハードウェアレベルの省電力技術は利用しない

VDI では 「Power Savings」「Power Cap」と呼ばれるハードウェア制御の省電力技術は無効が推奨です。これらは無駄な電力を抑えたり、消費電力に上限を設ける流行りのテクノロジーですが、VDI サーバーでは CPU 性能がガタ落ちします。
嫌らしいことに、これはログを分析してもなかなか判別できない。
VMware ESXi や Hyper-V は、ハイパーバイザーが CPU のクロック周波数を基準に複雑なスケジューリングを行います。しかしながら、これらの技術は、ハードウェア側で強引にクロックを抑え込むため、ハイパーバイザーは預かり知らず、計算が狂ってしまうのです。
ハイパーバイザーはクロックダウンに気づくと CPU の再スケジュールを行いますが、VDI にような大量な Guest OS が動くシナリオではこれは大きな負担であり、想像以上のパフォーマンス劣化を招いてしまうのです。


省電力設定を確認する

HP ProLiant サーバーの場合、電源投入後の POST 画面で確認できます。


既に稼働中のサーバーの場合、iLO からも確認可能です。


省電力設定を変更する

もし、Power Saving が有効だった場合は BIOS で Maximum や High といった値*1 に変更してください。前述の iLO を使えば、稼働中のまま多くを変更できます。


(2012.06.20 追記)
HP ProLiant の画面ばかりなので、手元にあった Dell さんの画面も載せてみます。


「こんなの工場出荷時は Hign Performance にしてくれよ」と思うところですが、
Dynamic Power Saving は、一般には性能低下は起こしません。むしろ、無駄な電力消費も抑えてくれるインテリジェントなテクノロジーです。VDI のような集約率の高い仮想化や HPC を除けば 基本的に Dynamic/Balanced で構わない と思います。


また、HP Gen8 サーバーであれば OS インストール時にきちんと聞いてくれる ので安心です。


ハイパーバイザーに制御を任せる

昨今の電力事情から、仮想環境でもインテリジェントな省電力技術を取り入れたいという要望もあります。
Hyper-V 2.0 や VMware vSphere は、ハイパーバイザーレベルで CPU の電力制御が可能です (OS Control)。こちらであればハイパーバイザーの範疇でクロック制御するため、仮想化の CPU スケジューリングに問題は発生しません。

VMware のマニュアルや KB では HP ProLiant を例に挙げて設定方法が載っています。メーカーによって多少異なるかもしれませんが、参考にしてみてください。

VMware KB 1018206: Poor virtual machine application performance may be caused by processor power management settings
http://kb.vmware.com/kb/1018206


2012.5.24 追記
このほか、仮想化サーバー向けの BIOS 設定を こちら でまとめてみました。

*1:「Static High Performance」は、ハードウェア側でロックしないだけで、常に最大電力で動作するわけではありません