仮想化道場
Haswell世代のXeon E5、1600/2600 v3シリーズ登場
(2014/9/9 09:00)
仮想化機能も進化
Haswell 世代のXeon E5シリーズでは、ハイパーバイザーのオーバーヘッドを低減するために、ハイパーバイザーソフトウェアで実現していたいくつかの機能をハードウェア化している。
まず、EPT A/D(EPTに関する状態情報)がサポートされた。ハイパーバイザーでは、EPT(拡張ページテーブル)を利用することで、オーバーヘッドを低減している。しかし、ハイパーバイザーと仮想マシンを頻繁に行き来するようになると、頻繁にVMM Exit/Entry命令が発効されるため、パフォーマンスに問題が出てきた。
そこで採用されたのがEPT A/Dだ。この技術では、ハイパーバイザーがソフトウェアで保持していたEPT A/Dをハードウェアに置き換えることで、処理が高速に行えるようになる。ハイパーバイザーが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よりアップしている。
さらに、コアが使用しているキャッシュメモリを監視するキャッシュ・モニタリング機能が追加されている。仮想化された環境では、ある仮想マシンが負荷が高いプロセスを動かすことで、同じプロセッサで動いているほかの仮想マシンのパフォーマンスを著しく低下させる。
キャッシュ・モニタリング機能を使うことで、あるコアがキャッシュを占有してしまうまでに、ソフトウェアに対してアラートを出せるようになる。仮想化の場合、ハイパーバイザーや仮想化の管理ツールがアラートを検知して、負荷の高い仮想マシンをほかのサーバーに逃がしたりすることで、仮想化したサーバーのパフォーマンスを一定に保つことが可能になる。
仮想化以外としては、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では、バグ修正はされずに次世代に持ち越しとなるようだ。
***
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をリリースした)。
このように、今後のサーバーやプロセッサだけでなく、メモリ、ストレージ、ネットワークなどすべてのパーツが性能アップしていかないと、システムとしてのパフォーマンスがアップしていかない。
こういった意味では、サーバーアプライアンスのようにチューニングされたサーバーシステムを買うのか、サーバーシステムを購入して自ら(あるいはシステムインテグレータが)チューニングするのか、といった手法が、より明確に分かれていくかもしれない。