Oba-Q's Free Space >  サーバーネットワーク > 仮想化に不向きなCPU?

仮想化に不向きなCPU?

昨日の投稿の【お下がり】について関連したことを書きます。

いずれお下がりとしてサーバーへ流用されるであろうCore i7。
拙生のWindowsメインマシーンは一つ前の3770Kですが、最新の
4770Kを含め、後ろに(K)が付くやつはサーバー使用に注意が必要です。

注意しなくてはいけないのはXenなどの仮想化ソフトを走らせるとき。
i7すべてに【VT-x】は実装されていますが、3770や4770、
また4770Sのように後ろにSやTが付いたもの、つまりK以外には
実装されている【VT-d】【TXT】が実装されていないのです。

仮想化技術の解説@あまり詳しくはないけど。。。

【VT-x】とは・・・簡単に説明するのは難しいのですが、
ゲストOSは自分が仮想化された領域にいるという認識はありません。
ゲストOSはハードウェア・リソースの制御に当然のごとく
プロセッサの最上位となるリング0という特権命令を出すのですが、
1つのゲストOSがリング0で制御してしまうと、他のゲストOSで
使えなくなってしまうことを防ぐための技術です。
VMM(バーチャルマシーンモニター)がハードウェア・リソースを
リング0で制御し、必要に応じてゲストOSに渡すというものですが、
ゲストOSはVMM上ではリング1やリング3で稼働させるので、ゲストOSが
出すリング0が出す特権命令がエラーにならないようエミュレーション
しなくてはいけません。
そのためにはゲストOSの出す命令の常時監視も必要です。
そんなこんなでソフト処理ではオーバーヘッドがすごいのですよ。
【VT-x】はオーバーヘッドを軽減させるハード面からの支援です。
これにはVMX rootとnon-rootというモードが存在し、VMMをrootで、
ゲストOSをnon-rootで稼働させておきます。
ゲストOSが特権命令を出したことを感知すると、VT-xはVMX non-root
からVMX rootへ、つまりVMM制御に切り替えをします。
このことにより、VMMは常時監視の必要がなくなり、大幅な
オーバーヘッド軽減につながるという仕組みです。

参考

更にVT-x Generation 2ではメモリアドレス管理の支援を行います。
ゲストOSは前述のとおり仮想化された領域にいるという認識がないため
物理メモリ空間を独自で占有していると思い込んでいるので、実際とは
異なるメモリアドレスにアクセスしちゃいます。
で、VMMは仮想マシが想定しているアドレスを、実際のアドレスに
リマッピングしなくてはならず、これも大きなオーバーヘッドとなるわけです。
これをハード面から支援して軽減させる技術を言います。

他に有って***Kにない【VT-d】とは

正式にはVirtualization Technology for Directed I/Oらしい。。。
これは仮想化I/O処理を支援する技術で、I/Oデバイスの割り当て、
DMAや割り込みのリマッピングを行う際、リマッピングエンジンを
チップセットに実装することで、VMMによる処理のオーバーヘッドを
軽減することができるとともに、、ゲストOSが直接ストレージや
ネットワークを制御することにより、アクセスがスピードが
格段に高速化できるというわけです。

注意しなくてはいけないのは、CPUだけでなくチップセット・仮想化
ソフトのバージョンが対応していなくてはいけないこと。
もう一つはゲストOSが直接制御するため同一のハードウェアリソースを
共有できないことになり、ゲストOS分のハードウェアリソースを有して
いなくてはいけないことです。

これに対して例えばPCI Expressは、IOVという技術で共有を実現
できるようになりましたが、実現できていないものも多くあります。
このようにVTの技術は日進月歩ではあるものの、まだまだ発展途上
ということなのでしょうね。

他に有って***Kにない【TXT】とは

複数のゲストOSが1台のマシーンに存在する場合、あるゲストOSから
別のOSの管理下にあるメモリー領域に直接アクセスできないように
しなくてはいけませんがこの役目はVMMが担います。
VMMはOS起動以前に稼働させるため、VMMの信頼性を検証および保証
するにはハードウェアからの支援が必要になり、それがTXTです。
(TXTはCPU・チップセットのハードウェアだけでは実現できず、
 2つのモジュールをインストールしなくてはいけません。)
TXTを一言でいうと、起動時にハッシュ値を検証・メモリへの不正
アクセスを監視しセキュリティを確保する技術です。

拙宅サーバーでの仮想化・ゲストOSは実際に稼働はしていなく、
実験的にやってうまく稼働したことを見届けただけであり、
実用化させる可能性はまずないと思いますが、仮想化技術を
駆使される方はCPUやチップセット・仮想化ソフトの選択に
注意が必要であります。
実験した時にはこれらの技術はまだ実現していなく、ゲストOSの
パフォーマンスはかなり悪く、ハードウェアの共用にも
難がありました。

勿論VX-xだけでもかなりの改善がされたわけです。
VT-dやTXTは技術書に書かれた記事の表面をなぞっただけの
知識しか持ち合わせませんが、これらの技術を駆使できれば、
更なるパフォーマンス向上を体感できるのでしょうね。
日進月歩@日々勉強!

CPUの仕様を調べていたとき***Kに機能がないことに気づいて
しまったので、備忘録として書いてみました。

This entry was posted in サーバーネットワーク. Bookmark the permalink.

Comments are closed.