インテルの自信作「Xeon 5500番台」の仮想化対応機能を見る
今回は、仮想化の視点で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番台のメリットが生きてくる。