Enterprise Watch
バックナンバー

インテルの自信作「Xeon 5500番台」の仮想化対応機能を見る


 インテルが発表した最新CPU「Xeon 5500番台」は、仮想化という観点から見れば待望のCPUといえる。「Xeon 5500番台は、Pentium Pro以来の革新的なCPUだ。このCPUによって、サーバーはさらに革新をしていくだろう」と発表会に出席した米Intel上席副社長 兼 デジタル・エンタープライズ事業本部長のパット・ゲルシンガー氏は語っている。

 今回は、仮想化の視点でXeon 5500番台の機能を解説していこう。


ネイティブなクアッドコアのXeon 5500番台

Xeon 5500番台のCPUコアのブロック図
 Xeon 5500番台は、昨年発売されたデスクトップ用のCore i7と同じNehalemマイクロアーキテクチャを採用したCPU。Xeon 5500番台は、Core i7と同じマイクロアーキテクチャを採用することで、デュアルコアのCPUを2つ組み合わせるといった場当たり的な設計ではなく、ネイティブなクアッドコアCPUを実現している。また、モジュラー構造を採用するなど、CPUコアをデザインし直しているので、容易にオクタコア(8コア)といったCPUもデザインできるようになっている。

 またXeon 5500番台では、各CPUコアそれぞれに一次キャッシュメモリ64KB(命令32KB+データ32KB)と二次キャッシュメモリ256KBを搭載するほか、4つのCPUコアで共有する三次キャッシュメモリとして8MB搭載している。CPU内部に大容量の三次キャッシュメモリを搭載することで、低速な外部メモリからのアクセスを小さくしている。

 これは仮想化利用時に重要なことだ。仮想化においては、通常のOS動作よりも頻繁にメモリアクセスが行われるため、CPU内部に大容量のキャッシュメモリを搭載していることは、仮想環境のパフォーマンスを左右する。


 またXeon 5500番台では、複数のCPUの接続に、新しいQuick Path Interconnect(以下、QPI)という高速なシリアルバス(6.4GT/s)を採用している。Xeon 5400番台では、FBSというバスに、デュアルソケットやクアッドソケットのCPUがそのまま接続されていたため、FSBがボトルネックになってシステム全体のパフォーマンスに影響を及ぼすようになってきた。QPIはポイントツーポイント(P2P)のバスとなっているため、FSBのように複数のCPUやチップセットが共有しないので、CPU間の通信が高速化されている。

 QPIはスピード面でメリットがあるが、接続するCPUの数やチップセットの数が増えれば、その分QPIの数も増やさなければならない。Xeon 5500番台はデュアルソケットに対応しているため、QPIは2本(CPU間とチップセット)だが、クアッドソケットのシステムだとQPIは4本(CPU間で3本、チップセットに1本)となる。


 このほか、Xeon 5500番台では、Hyper-Threading(HT)がサポートされている。これにより、クアッドコアのCPUが仮想的に8つのコアに見える。このHTだが、ハイパーバイザーは仮想的にCPUコアを利用するため、CPU上のHTは意味がないだけでなく、ハイパーバイザーのパフォーマンスを落とす可能性もある。ハイパーバイザーをリリースしている某ソフトウェアベンダーは、仮想化においてHTは使用しないようにとユーザーに説明しているようだ。


大量のメモリ帯域を使用する仮想化に最適な新メモリインターフェイス

Xeon 5500番台のブロック図。CPUにメモリが接続されている。CPUあたり、DDR3のメモリが3チャンネル×3ソケットで、最大9本挿すことができる
 メモリインターフェイスの改良も、Xeon 5500番台の特長だ。

 Xeon 5400番台では、FBSといわれるバスにチップセットを接続し、メモリコントローラを内蔵したチップセットを経由して、メモリにアクセスしていた。しかし、このアーキテクチャでは、CPUからメモリが遠いところにあるため、メモリのクロックスピードがアップしても、レイテンシーが大きくなる。このため、メモリのクロックスピードをアップしても劇的にシステムの速度が速くなるということはなかった。

 それに対し、Xeon 5500番台では、外部メモリのインターフェイスをCPU内部に持ってきている。これによりレイテンシーが小さくなり、Xeon 5400番台と同じクロックのメモリを使用しても、Xeon 5500番台の方がパフォーマンスが高くなっている。仮想化では大量のメモリ帯域を使用するので、Xeon 5500番台は仮想化に最適なCPUといえる。

 また、Xeon 5500番台では、チャンネルごとにメモリスロットが3つサポートされているため、1CPUあたり最大9枚のメモリを搭載できるほか、Xeon 5400番台で使われていたFB-DIMMメモリではなく、デスクトップに使用しているDDR3メモリが使用できるのも利点だ。このため、大量のメモリを使用する仮想化においては、メモリコストが安くなる(ひいては、システムコストが安くなる)。


Xeon 5500番台では、メモリチャンネルが3チャンネル用意されている。これにより、最大32GB/sのスピードがでる。2ソケットのシステムなら、最大64GB/sにもなる

リモートCPUのメモリにアクセスするには、時間とCPUパワーがかかる
 ただし、1チャンネルあたり、何個のソケットにメモリを挿すかで、メモリのスピードが変わる点に注意が必要だ。

 1ソケットしか利用しない場合は、メモリは最高速度の1333MHzで動作する。2ソケット使用する場合は、1066MHzに限定される。さらに、3ソケットすべてを利用する場合は、800MHzにまでスピードが落ちてしまう。また、メモリの種類も1ソケットと2ソケットでは、デスクトップPCで利用されているUnbuffered DIMM(U-DIMM)とRegistered DIMM(R-DIMM)の両方が使用できるが、3ソケット使用する場合はR-DIMMしか使用できない。

 大容量のメモリが必要になる仮想化だが、Xeon 5500番台では、メモリをフル実装してしまうとスピードが落ちてしまう。このあたりは、仮想化におけるメモリの使用率とメモリのクロック数を考えながら、最もいいバランスを探す必要があるだろう。

 もう一つ注意が必要なのは、CPUごとにメモリインターフェイスが存在するため、サーバーのシステムがNUMA(Non-Uniform Memory Access)になることだ。NUMAアーキテクチャの場合、ローカルCPUに接続されているメモリアクセスは高速だが、ほかのCPUに存在するメモリにアクセスする場合は、著しくパフォーマンスが落ちる。また、ほかのCPUがメモリアクセスに介在するため、余計なCPUパワーを必要とする。NUMAアーキテクチャにおいて仮想環境を割り当てるときに、ローカルCPUが搭載しているメモリ容量以上を割り当てないといった注意が必要だ。


64ビットハイパーバイザーのパフォーマンスを強化する命令セット

Xeon 5500番台のNehalemマイクロアーキテクチャ図。Xeon 5400番台のCoreマイクロアーキテクチャとあまり変わっていない

Xeon 5500番台のSSE 4.2で追加されたCRC32とPOPCNT。CRC32は、CRCチェックサムの計算を高速化する。POPCNTは、文字列のマッチングを高速化する。POPCNTは、XMLデータなどを扱うときに高速化される
 Xeon 5500番台のマイクロアーキテクチャは、Xeon 5400番台で使われているCoreマイクロアーキテクチャを改良したもの。大幅にアーキテクチャが改良されているわけではなく、Coreマイクロアーキテクチャに存在した不都合な部分の修正やパフォーマンスをアップするための機能が追加されている。

 サーバーにとっても最も大きな改良は、Xeon 5400番台で問題のあった64ビット関連の機能の修正が行われていることだ。Coreマイクロアーキテクチャでは、複数の命令を1つのx86命令として扱う「MacroFusion」機能が64ビットコードではサポートされていなかった。このため、32ビットOSではきびきび速いが、64ビットOSにするとあまり高速に動作しないといったことが起こっていた。

 Xeon 5500番台(Nehalemマイクロアーキテクチャ)では、64ビットコードにおけるMacroFusion機能をサポートした。これにより、64ビットOSでも高いパフォーマンスを示すようになった。この機能は、64ビットモードで動作するハイパーバイザーにとっては、性能を上げる大きな要素となるだろう。

 さらに、SSEといわれる浮動小数点演算の機能も4.2にアップされている。サーバーに関連する機能強化面としては、SSE 4.2で追加された高速にCRCを演算するCRC32などは、iSCSIなどで使われているエラー訂正のCRC計算を命令一つで行うことができる。このことは、iSCSIのパフォーマンスアップにつながると期待されている。

 これ以外にもCPUの内部構造が改良されているため、Xeon 5500番台は、Xeon 5400番台よりも高いパフォーマンスを実現している。


CPUコアの電源管理機能はハイパーバイザー次第?

 Xeon 5500番台では、CPUコアごとに電源管理が行えるPCU(Power Control Unit)が新たに搭載されている。PCUでは、コアごとの電流、電力、温度をチェックして、CPUコアの動作がアイドル状態になれば、そのCPUコアの電源をカットして、残りのCPUコアで動かすようにする。これにより、サーバーがアイドル状態になっている場合は、CPUコアの電源がオフになるため、CPU全体の消費電力が低くなるというものだ。

 さらに、Xeon 5500番台では、PCUがCPUの温度を把握して、規定の温度や電流量以下の場合、CPUコアの動作クロックを自動的に引き上げて、より高いパフォーマンスで動作させるTurbo Boost(この場合、より電力を消費して、発熱することになる)機能が用意されている。つまり、PCUが自動的にオーバークロックの状態を作り出すのだ。

 PCUによりCPUコアごとに電源をカットする機能は、ハイパーバイザーなどと関係なくCPU内部で独自に行う。この機能をハイパーバイザーが生かし切るには、きちんとXeon 5500番台に対応する必要があるだろう。また、Turbo Boostは機能としては面白いが、信頼性を重視するサーバー分野で、どの程度受け入れられるか未知数だ。


オーバーヘッドを大幅に改善する仮想化支援機能

Xeon 5500番台で追加された仮想化支援機能EPT、VPIDにより、旧世代よりも40%も高速化されている

EPTでは、メモリアドレス変換をCPUで行う
 Xeon 5500番台には、仮想化支援機能「VT-x」の第二世代ともいうべき「EPT(Extended Page Tables)」と「VPID(Virtual Processor ID)」という機能が搭載されている。

 ハイパーバイザーは、物理メモリ空間を仮想環境が動作している仮想メモリ空間にマッピングしている。現在は、物理メモリ空間と仮想メモリ空間の変換をハイパーバイザーがソフトウェア的に行っている。複数の仮想マシンを動かすハイパーバイザーでは、一つ一つの動作にメモリの変換が行われるため、CPUに多大な負荷をかけている。これが、仮想環境のオーバーヘッドの大きな部分を占めている。

 EPTは、メモリのマッピングを計算する機能をCPUのハードウェアとして実現するもの。これにより、ハイパーバイザーでは、複雑なソフトウェア処理をしなくても、数命令で物理メモリ空間と仮想メモリの変換処理が行える。

 VPIDは、仮想マシンが切り替わったときに物理メモリと仮想マシンのメモリ空間をマッピングするテーブルを仮想マシンごとに保存しておく機能。これにより、仮想マシンが切り替わっても、仮想マシンごとにメモリ空間をマッピングするテーブルが保存されているため、すぐにテーブルを戻すことができる。

 ただし、これらの機能は、ハイパーバイザー側が対応していないと使えない。現在、Xen 3.3はサポートしており、Hyper-V 2.0やVMware ESXの次期バージョンでサポートされる予定となっている。

 サーバーベンダーがXeon 5500番台を採用したサーバーを発表したときに、Xeon 5500番台で採用された新しい仮想化機能とこれらの機能に対応したハイパーバイザーを利用すると、仮想化のオーバーヘッドは10%以下に抑えられると語っていた。ここまでくれば、物理環境で利用しても、仮想環境で利用しても、パフォーマンスの違いは出なくなるだろう。


システム全体での仮想化対応機能も強化

VT-dにより、ソフトウェアで仮想NICなどを構築して、1つの物理NICにトラフィックを流していた。VT-dにより、仮想環境から直接物理NICにアクセスできるようになる

VMDqは、NICカード内部に複数のキューを用意して、複数の仮想環境からくるネットワークパケットを整理する。これにより、効率の良い通信が行える
 Xeon 5400番台から搭載されているVT-dは、I/Oが使用するDMAのアドレスを物理サーバーと仮想マシンの間でマッピングする機能をハードウェア化したもの。これにより、仮想マシンから直接I/Oにアクセスすることができる。

 一部のハイパーバイザーは、VT-dの機能を利用して、特定のI/Oを複数の仮想環境で共有するのではなく、仮想環境からダイレクトに利用できる仕組みを用意している。これにより、ダイレクトにグラフィックカードが利用できるようになったり、NICを利用したネットワークストレージを特定の仮想環境だけが占有してネットワークストレージのパフォーマンスを一気にアップすることができる。

 VT-dの機能と組み合わせて使うのが、NIC側に搭載されるVT-c(Virtualization Technology for Connectivity)だ。VT-cは、特にNICの仮想化におけるパフォーマンスをアップする。

 VT-cは、I/O AT(Acceleration Technology)とVMDq(Virtual Machine Device Queues)とSingle Root I/O Virtualizationの3つの機能によって構成されている。I/O ATは、ネットワークカード側でTCP/IPプロトコルの処理(Offload)をすることで、OS側の処理を簡略化し、CPU負荷を低くすることができる機能だ。さらに、複数の仮想マシンからのネットワークカードへのアクセスを調整して、効率よく通信するようにデータの並べ替えを行うVMDqを使用することで、仮想マシンでのネットワークトラフィックのパフォーマンスをアップする。

 現在、VT-cに対応しているハイパーバイザーはない。ただ、Hyper-V 2.0、次世代ESX、Xen 3.4などは対応を表明している。また、VT-cに対応したNICチップは、インテルの製品しかないため、現状ではインテルだけの機能拡張となっている。いくつかのメーカーでは、VT-cに近い機能をNICチップでサポートしているため、多くのハイパーバイザーでは、これらのNICチップもサポートする。


VMwareでは、インテルのVMDqに対応した仕組みとしてNetQueueを提案している。NetQueueは、次世代のESXに搭載される VMDqとNetQueueの組み合わせにより、仮想化上でも物理NICのパフォーマンスに近づけることができる。これで、仮想化のオーバーヘッドは、非常に小さくなる

 このように、Xeon 5500番台は、仮想化のために生み出されたCPUといってもいいだろう。しかし、Xeon 5500番台の機能を生かし切るには、Xeon 5500番台に対応した新しいハイパーバイザーが必要になる。次世代のハイパーバイザーがリリースされてこそ、Xeon 5500番台のメリットが生きてくる。


関連記事
  ・ Pentium Pro以来のサーバー革新-インテルがXeon 5500番台を発表(2009/04/06)
  ・ Xeon 5500の性能は本物か? NS SOLが実証検証結果を公表(2009/04/16)


( 山本 雅史 )
2009/04/20 00:00

Enterprise Watch ホームページ
Copyright (c) 2009 Impress Watch Corporation, an Impress Group company. All rights reserved.