仮想化道場

Haswell世代のXeon E5、1600/2600 v3シリーズ登場

仮想化機能も進化

 Haswell 世代のXeon E5シリーズでは、ハイパーバイザーのオーバーヘッドを低減するために、ハイパーバイザーソフトウェアで実現していたいくつかの機能をハードウェア化している。

 まず、EPT A/D(EPTに関する状態情報)がサポートされた。ハイパーバイザーでは、EPT(拡張ページテーブル)を利用することで、オーバーヘッドを低減している。しかし、ハイパーバイザーと仮想マシンを頻繁に行き来するようになると、頻繁にVMM Exit/Entry命令が発効されるため、パフォーマンスに問題が出てきた。

 そこで採用されたのがEPT A/Dだ。この技術では、ハイパーバイザーがソフトウェアで保持していたEPT A/Dをハードウェアに置き換えることで、処理が高速に行えるようになる。ハイパーバイザーがEPT A/Dをサポートすれば、仮想マシンが必要とするEPT情報がすぐにわかるため、複雑な処理後に仮想マシンに戻る必要がなくなる。

Haswell世代のXeonでは、仮想化においてもいくつかの機能が追加された
EPT A/Dにより、EPTのパフォーマンスが向上する

 また、Nested VMMのVMCS(Virtual Machine Control Structure)をサポートしている。VMCSにより、仮想マシン上に別にハイパーバイザーを搭載して、その上に仮想マシンを動作させるということが可能になる。例えば、VMware ESXi上にMicrosoft Hyper-Vを搭載して、Hyper-V上の仮想マシンでWindows OSを動かすといったことが可能になる(実際にできるかどうかは、ハイパーバイザーの対応いかんである)。

 今までは、ハイパーバイザー上で別のハイパーバイザーを搭載して動かす、といった状況をそれほど考えていなかったため、もともと動作しないか、ハイパーバイザーによってはソフトウェアでNested VMMの機能をサポートしていた。しかしソフトウェアだとあまりにも遅く、テストで試してみることはできたが、性能的には実用化できるモノではなかった。

 今回VMCSがサポートされたことで、2段重ねにしたハイパーバイザー上で起こるVM Exit/Entry処理をまとめて一度に行えるようになった。これにより、頻繁にVM Exit/Entry処理が行われなくなり、パフォーマンスも向上する。

 Nested VMMに関しては、現実的にはそれほど利用されないかもしれない。しかし、OpenStackなどのクラウド環境を考えていけば、ESXiベースのクラウドに、中間的にHyper-V環境のクラウドを移行するといったシーンも考えられる。

 これ以外では、VM Exit/Entryの性能もIvy Bridge世代のXeonよりアップしている。

VMCSによってNested VMMが高速に動作するようになる
Nested VMMは、レガシー環境のサポート、管理/保護、開発/テストなどに役立つだろう

 さらに、コアが使用しているキャッシュメモリを監視するキャッシュ・モニタリング機能が追加されている。仮想化された環境では、ある仮想マシンが負荷が高いプロセスを動かすことで、同じプロセッサで動いているほかの仮想マシンのパフォーマンスを著しく低下させる。

 キャッシュ・モニタリング機能を使うことで、あるコアがキャッシュを占有してしまうまでに、ソフトウェアに対してアラートを出せるようになる。仮想化の場合、ハイパーバイザーや仮想化の管理ツールがアラートを検知して、負荷の高い仮想マシンをほかのサーバーに逃がしたりすることで、仮想化したサーバーのパフォーマンスを一定に保つことが可能になる。

キャッシュ・モニタリングは、コアが使用しているLLCのメモリ容量を監視する
キャッシュQoSによりコアごとのキャッシュがモニタリングできることで、高い負荷をかけている仮想マシンを別のサーバーに移動させることもできるようになる

 仮想化以外としては、AVX 2.0がサポートされている。AVX 2.0では、AVX整数演算が256ビット化されるなど、AVX 1.0に比べると大幅に性能アップしている。

 ただし、8月にデスクトップのHaswellプロセッサでバグが判明したTSX(Transactional Synchronization Extensions)に関しては、修正がされていないため、今回のXeon E5-1600/2600 v3では機能がオフにされているようだ。このため、Xeon E5-1600/2600 v3では、バグ修正はされずに次世代に持ち越しとなるようだ。

AVX 2.0の概要。Linpackの性能が90%以上アップしたという

***

 Xeon E5-1600/2600 v3のパフォーマンスに関しては、詳細なデータがとれていないので何とも言えないが、Intelでは、コア数の増加やAVX 2.0のサポートにより、HPCで利用されるLinpackなどのベンチマークテストでは2倍~6倍の性能を出しているとしている。

 また、サーバー側のJavaアプリケーションのベンチマークとして有名なSPECjbbにおいても、30%以上の性能アップが行われているとしている。Javaに関しては、新しいJava VMのJDK8がAVXをサポートしたことが大きな要因だろう。

 このようにXeon E5-1600/2600 v3は、DDR4メモリの採用、コア数の増強などで、性能アップを果たしている。しかし、DDR4メモリはコストが高いため、仮想化サーバーで利用するために多くのメモリ容量を搭載すると高額になる。このあたりは、もう少し時間経たないと、コストが落ちてこないだろう。

 また、プロセッサやメモリだけが、性能アップしても、サーバー自体の性能はIO関連が問題になってくる。大きなポイントとしては、ネットワークとストレージだろう。

 ネットワークに関しては、サーバーでは10Gigabit Ethernet(GbE)が一般化しているが、Xeon E5-1600/2600 v3では40GbEに対応するために40レーンものPCI Expressが用意されている。さらに、Intelでは10/40GbE用のイーサネットコントローラ(XL710)を提供している。

 また、ストレージに関してもHDDではなく、SSDが必要になってくる。今までのようなSATAやSASインターフェイスではなく、PCI Expressに直結した高速なSSDが必要になってくるだろう(IntelではPCI ExpressベースのSSD DC P3700をリリースした)。

 このように、今後のサーバーやプロセッサだけでなく、メモリ、ストレージ、ネットワークなどすべてのパーツが性能アップしていかないと、システムとしてのパフォーマンスがアップしていかない。

 こういった意味では、サーバーアプライアンスのようにチューニングされたサーバーシステムを買うのか、サーバーシステムを購入して自ら(あるいはシステムインテグレータが)チューニングするのか、といった手法が、より明確に分かれていくかもしれない。

今後、サーバーはプロセッサやメモリの単体性能よりも、ストレージやネットワークを合わせた性能が必要になる

山本 雅史