Enterprise Watch
最新ニュース

IDF 2008で見たIntelの仮想化対応策


 8月に米国サンフランシスコで開催されたIntelの開発者向けセミナー「Intel Developer Forum(IDF)2008」では、仮想化機能をより拡充する方針などが説明された。ここでは、仮想化機能に関連する情報をまとめて紹介する。


ハイパーバイザのパフォーマンスをアップするCPU

Intelの仮想化は、このような機能によって構成される
 IntelのCPUには、VT-xという名称のハードウェアによる仮想化支援機能が搭載されている。現在、Penryn世代のCPUで搭載されているVT-x機能は、仮想化のハイパーバイザをリング0というOSのカーネルが動作するモードよりも、さらに高い優先度のモード「VMX Root/VMX non-Root」で動作するようにできている。さらに、ハイパーバイザが仮想マシンを切り替えたときに、CPUのレジスタなどを効率的にスイッチできるような命令とレジスタなどの保存領域が用意されている(VMCS Virtual Machine Control Structure)。

 これらの機能がハードウェア化されていることで、IntelのCPUは、高速にハイパーバイザを動かすことができる(AMDのOpteronでも同じような機能がサポートされている)。

 このVT-xは、最新のPenryn世代だけでなく、Pentium D世代から一部のCPUには搭載されている。また、ItaniumにもVT-xと同じような仮想化支援機能のVT-iが搭載されている。VT-xを使用するとソフトウェアだけで、すべての機能を実現するのに比べると2倍以上のパフォーマンスアップを実現している。

 現在、MicrosoftのHyper-V、VMwareのESX Server、Xenなど多くの仮想化ソフトウェアで、VT-xはサポートされている。これにより、仮想環境のパフォーマンスをアップでき、1台でより多くの仮想マシンを動かしたり、より複雑な処理を行わせることができるようになっている。

 Intelでは、次世代のCPU「Core i7」(開発コード名:Nehalem)において、VT-xの機能をさらに拡充しようとしている。

 Core i7では、Extended Page Tables(EPT)とVirtual Processor ID(VPID)という機能が搭載されている。ハイパーバイザは、物理メモリ空間を仮想マシンが動作している仮想メモリ空間にマッピングすることで、仮想マシンが複数動作していても、きちんと整理して動作できるようになっている。ただ、現在のハイパーバイザは、ソフトウェアでメモリ空間を管理しているため、ハイパーバイザ上で頻繁にメモリ管理を行うタスクが動作することになる。このため、複数の仮想マシンを動かすハイパーバイザでは、一つ一つの動作にメモリのマッピング機能がかかわるため、この部分が大幅なパフォーマンス低下をもたらしている。

 そこで、EPTでは、メモリのマッピングを計算する機能をハードウェアで追加している。これにより、仮想マシンのメモリが物理メモリのどの部分にあるのかなどを高速に計算することができるようになる。ハイパーバイザで頻繁に計算を行うメモリのマッピング機能が高速に処理できるということだ。


Core i7で搭載されるEPTは、仮想マシンからのメモリアクセスを高速化する Core i7でサポートされるEPTとVPIDにより、仮想環境が現在のCPUよりも40%以上パフォーマンスアップする EPTは、仮想マシンのメモリ空間を物理マシンのメモリ空間に変換するためのテーブルをハードウェアで支援している

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

 EPTに関しても、ハイパーバイザ自体がサポートしなければ、CPUがサポートしていても、パフォーマンスアップしない。現在、Hyper-V、ESX Server、XenなどがEPT機能をサポートすることを表明している(Xenでは、3.3においてEPTが先行的にサポートされている。Hyper-VやESX Serverなども次バージョンでは、EPTのサポートを表明している)。

 Intelでは、EPTとVPIDをサポートしたハイパーバイザが、どのくらいパフォーマンスアップするかは明確に述べていないが、いくつかの資料から現在のPenryn世代のCPUよりも2倍近いパフォーマンスアップをする可能性がある。


 また、仮想環境で起こる割り込みを優先順位をつけて整理するVT FlexPriority機能が用意されている。今までのハイパーバイザでは、複数の仮想マシンから起こる割り込みを管理するために、APICをソフトウェアで実現していた。しかし、VT FlexPriority機能では、APICのTPR(割り込みの優先度を表すレジスタ)ハードウェアに仮想マシンから直接アクセスしても、トラブルが起こらないようにしている。これにより、仮想マシン上で割り込みが起こるごとに、ハイパーバイザに移行していたのが、仮想マシン内部でAPICへのアクセスが終了するため、仮想マシンとハイパーバイザ間で頻繁に切り替える必要がないので、切り替えのオーバーヘッドが小さくなる。

 Intelでは、FlexPriorityをハイパーバイザがサポートすることで、35%ほどのパフォーマンスアップが図れるとしている。


FlexPriorityを利用することで、仮想環境が35%ほどパフォーマンスアップする FlexPriorityは、仮想マシンからの割り込みをハイパーバイザでソフトウェア的に処理するのではなく、仮想マシン上からダイレクトにAPICにアクセスできるようにすることで、仮想マシンとハイパーバイザのモードチェンジの回数を少なくして、パフォーマンスを上げる

仮想環境のサーバー間移行をサポートするFlexMigration

 IntelのCPUは、世代によってサポートされている命令が若干異なる。基本的な命令部分は、Pentium III世代からほとんど変わらないが、SSEといわれる浮動小数点のSIMD処理命令に関しては、世代ごとにバージョンアップが行われている。

 たとえば、仮想マシン上のアプリケーションが最新のSSE4を使用している場合(物理CPUもサポートしている)、仮想マシンを別の物理サーバーに移行させるLive Migration機能(VMwareではVMotionと呼ばれている)を利用するには、移行先の物理サーバーもSSE4をサポートしている必要があった。このため、移行先の物理サーバーがSSE3などしかサポートしていない場合は、移行した仮想マシン上で動作しているSSE4をサポートしたアプリケーションは、クラッシュしてしまう。このように、新しいCPUと古いCPUでは、いくつか異なる部分があるため、世代の異なるサーバーを組み合わせたサーバー群では、トラブルが起こっていた。

 そこで、Intelでは、CPUにFlexMigrationという機能を用意して、古い物理サーバーに移行しても動作できるようにしている(AMDもExtended Migrationという機能を用意している)。

 VMwareのESX Serverでは、IntelのFlexMigrationとAMDのExtended Migrationの2つをサポートしているため、VMotionにおけるCPUの互換性を保証している。

 VT-x、FlexPriority、FlexMigrationなどの機能は、2007年11月にリリースされたXeon 5400番台以降はサポートしている。VT-xの新しい機能となるEPTやVPIDは、次世代のCore i7からサポートされることになる(Intelでは、EPTやVPIDなどを合わせて第二世代のVT-xと呼んでいる)。


仮想サーバー間で仮想マシンを移行させる場合、CPUやプラットフォームが異なると、新しいCPUにチューニングされたアプリケーションは、古いCPUでは動作しない FlexMigrationでは、仮想サーバー間での違いを吸収して、どの仮想サーバーでもアプリケーションが動作するようにする FlexMigrationは、2006年にリリースしたXeonからサポートされている。これ以前のCPUは対応していない。現在のPenryn世代、次世代のNehalem(Core i7)以降もサポートされていく。将来にわたって、仮想マシンの移行が保証されるとしている

仮想化をI/Oにまで広げるVT-d

VT-dは、チップセットでサポートされる仮想化支援機能

VT-dにより、仮想マシンがI/Oを利用するときに使用するDMAをハード的にマッピングする。これにより、I/Oの仮想化が行える
 Intelは、CPUの仮想化はVT-x、FlexPriority、FlexMigrationなどで進めているが、周辺インターフェイスの仮想化は、X35シリーズのチップセットから搭載されたVT-d(Virtualization Technology for Directed I/O)によりサポートされる。

 VT-dは、I/Oが使用するDMAのアドレスを物理サーバーと仮想マシンの間でマッピングする機能をハードウェア化している。これにより、仮想マシンから直接I/Oにアクセスすることができる。

 今までのハイパーバイザでは、仮想マシン上に仮想的なドライバをおき、ハイパーバイザやペアレントOS上にある特殊なドライバが複数のアクセスを調整して、物理サーバーのI/Oドライバにアクセスする。これにより、I/Oハードウェアを仮想化している。

 I/Oを仮想化することで、複数の仮想マシンから1つのI/Oを共有することができるが、その分パフォーマンスは低下する。そこで、仮想マシンから直接I/OにアクセスできるようにしたのがVT-dだ。

 VT-dを使用すれば、仮想マシンから直接I/Oにアクセスできるため、物理サーバーに接続しているI/Oと同じパフォーマンスを実現する。ドライバは、仮想ドライバではなく、VT-dをサポートしたドライバ(物理マシンにインストールするときに使用するドライバにVT-d機能をプラス)を利用することになる。

 しかし、仮想マシンから直接I/Oにアクセスするため、その仮想マシンがI/Oを占有してしまうことになる。このため、複数の仮想マシンで1つのI/Oを共有することはできない(現在、VT-dがサポートしているのは、PCI Expressカードのみ)。たとえば、ネットワークカードをVT-dで使用するなら、仮想マシン分のネットワークカードが必要になる。複数のPCI Expressカードが搭載できるように、多くのスロットを持っていたとしても、限度がある。

 このため、多数の仮想マシンを動かしている場合は、パフォーマンスを必要とする仮想マシンにだけVT-dを使用して、その他の仮想マシンは今までと同じようにI/Oを仮想化して使用することになる(次バージョンのVMwareのESX ServerでVT-dがサポートされる予定。Xenはすでにサポートされている)。


VT-dでは、DMAとI/Oアドレスのリマッピングをハードウェアでサポートしている VT-dの動作図 VT-dを利用して仮想マシンからダイレクトにネットワークカードにアクセスできるようにした場合、物理サーバーで使用したのとほぼ同じパフォーマンスを実現する

 将来的には、PCI Expressカード自体の仮想化が必要になる。現在、PCI-SIGにおいて、PCI Expressカードの仮想化「IOV」が規格化されている。IOVに対応したI/Oカードがリリースされれば、VT-dを利用してアクセスしても、I/Oが仮想化しているため、1つの仮想マシンがI/Oを占有することもなく、パフォーマンスもアップする(1つの物理マシンで使用するのに比べるとオーバーヘッドあるが、限りなく小さくなるだろう)。

 ここまでくれば、仮想化で大きな問題となっているディスプレイも本格的に仮想化することができるだろう。現在のような標準的なVESAディスプレイではなく、グラフィックカードの機能をいかしたまま仮想化することができる。また、ディスクI/Oがネイティブで仮想化されることで、ディスクアクセスもパフォーマンスアップするだろう。そうなれば、仮想化のパフォーマンスが大幅にアップして、デスクトップPCでも利用できるようになるだろう。


PCI-SIGが規定しているIOVをPCI Expressカードがサポートすることで、VT-dと組み合わせて、仮想マシンから直接PCI Expressカードにアクセスすることができる IOVにより、複数の仮想マシンからのアクセスをPCI Expressカード上で仮想化することができる

ネットワークカードのパフォーマンスをアップするVT-c

 VT-c(Virtualization Technology for Connectivity)は、特にネットワークインタフェースの仮想化におけるパフォーマンスをアップする。VT-cは、ネットワークカードを対象とした機能だ(ネットワークカードに搭載される)。


VT-cをサポートしたネットワークカードは、複数の仮想マシンからのトラフィックを整理する。これにより、TCP/IPのパケットをロスなく送受信することができる
左側はソフトウェアでI/Oをエミュレーションする現状の仮想化。右側はVT-dを使用して仮想マシンにI/Oをダイレクトにマッピングして、I/Oの物理的なパフォーマンスを仮想マシン上で利用することができる
VT-cを構成するVMDqは、このように仮想マシンからのネットワークアクセスをハイパーバイザとネットワークカード上でTCP/IPパケットを効率よく並べ替えて、アイドルを作らないようにしている

 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負荷を低くすることができる機能だ。これに、PCI-SIGで策定したI/Oの仮想化「IOV」のSingle Root I/O Virtualizationという機能を組み合わせることで、仮想環境において、特にネットワークカードだけをI/Oレベルから仮想化することができる。

 さらに、複数の仮想マシンからのネットワークカードへのアクセスを調整して、効率よく通信するようにデータの並べ替えを行うVMDqを使用することで、仮想マシンでのネットワークトラフィックのパフォーマンスをアップする。


VMDqは、VMwareのNetQueue機能と対になって動作する。他のハイパーバイザでも将来的には、VT-cがサポートされる予定だ
VMDqとNetQueueの組み合わせにより、仮想環境におけるネットワークのパフォーマンスは、3倍以上アップする

I/O ATの機能。TCP/IPのプロトコル処理をネットワークカード側で行うことで、OS側の負荷を小さくし、パフォーマンスをアップしている
I/O ATがサポートされているIntelのネットワークチップ

Core i7では、新たな命令の追加とプラットフォームのパフォーマンスアップにより、iSCSIの性能が大幅にアップしている
 現在、VT-cに対応したハイパーバイザとしては、VMwareのESX Serverがある。VMwareのNetQueueとVT-cの組み合わせにより、ネットワークのパフォーマンスが大幅にアップする。Intelでは、すでにVT-cに対応したネットワークカードをリリースしている。これらのネットワークカード上でiSCSIを動かすことで、仮想マシンに負担をかけず、高速にアクセスできるネットワークドライブが実現する。

 Intelでは、CPU、チップセット、I/Oカードなどさまざまなレベルで、仮想化を支援する機能を用意している。すべてのレベルで仮想化支援機能がそろうことで、仮想化2.0(Virtualizaion 2.0)が完成するとIDFでも述べられていた。この仮想化2.0が完成するのは、次世代のCore i7世代になるだろう。ネットワークカードの仮想化などは、一部先行して進んでいるが、PCI Expressカード全体の仮想化に関しては、2009年ぐらいから本格的に対応することになるだろう。


Intelでは、仮想化は2.0という新しい段階にさしかかっているとしている
Intelの仮想化支援機能が入った仮想化2.0を利用することで、仮想化のオーバーヘッドを小さくし、仮想マシンをできる限り物理サーバーに近いパフォーマンスを実現したいとしている
仮想化2.0が実現したプラットフォームでは、さまざまな仮想化支援機能により、仮想環境が高速に動作するようになる

 ただ、ハードウェアがすべてのレベルで仮想化をサポートしても、ハイパーバイザや仮想マシン上の専用ドライバなど、ソフトウェアの対応が必要になる。

 Xenは、これらの先進的な仮想化機能を意欲的に取り込み、最新バージョンで多くの機能がサポートされている。VMwareは、もう少しコンサバティブで、2009年にリリースする次バージョンのESX Serverで仮想化2.0で用意されているほとんどの機能をサポートする(すでに、一部の機能は先行的にサポートされている)。特に、IntelやAMDとは、協調して、ハイパーバイザの開発を行っているため、安定した形で最新の仮想化支援機能がサポートされることになるだろう。

 MicrosoftのHyper-Vに関しては、現状の1.0ではハイパーバイザ型への本格移行を果たしただけで、仮想化2.0で用意されている多くの機能はまだサポートされていない(Hyper-Vでは、第一世代のVT-xのみ)。Hyper-V 1.0では、基本的なハイパーバイザを提供したのみだ。このため、仮想化2.0に対応していくためには、早急に次世代のHyper-Vを提供する必要があるだろう。

 また、Intelでは、VT-xにより、ハイパーバイザ自体にぜい弱性が出る可能性があると考えている。このため、ハイパーバイザが起動する前にハイパーバイザの改ざんの可能性をチェックするTXT(Trusted Execution Technology)という機能とTPMデバイスを利用することで、ハイパーバイザの正当性を起動時にチェックすることができる。

 この機能を利用すれば、ハイパーバイザがハッキングされて、不正なコードが入り込むこんだ場合、ハイパーバイザ自体が改ざんされたことを知ることができる。

 ただ、現状では、TXTに対応したソフトウェアはリリースされていないし、多くのサーバーには、まだTPMデバイスが搭載されていない。このため、TXTを利用したハイパーバイザの正当性のチェックに関しては、2009年以降に環境が整うことになるのだろう。



URL
  Intel Developer Forum
  http://www.intel.co.jp/idf/


( 山本 雅史 )
2008/09/05 08:54

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