topimg.jpg


スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告

仮想化のオーバヘッドと性能を向上させる3つの技術(大幅改定)

仮想化の根本的な部分を更に勉強し直したので、その覚書の大幅改定。

□仮想化支援機能
□ホスト型とハイパーバイザ型
□完全仮想化(Full virtualization)と準仮想化(Para Virtualization)
の3つについて。

上記3つの説明の前に、まず仮想化によるオーバヘッドの原因についてのまとめ。

【仮想化によるオーバヘッド】
完全仮想環境でホスト型仮想化ソフトを利用した場合の、性能上オーバヘッドになる部分をまとめてみた。一応、自分なりに4つにまとめてみた。まあ、これ以外にも細かい点ではいっぱいあるだろうがw
赤字は、その問題を解決する下記で紹介されている技術。ちなみに、この中で今一番の仮想化の問題は
③IOデバイス(ディスク、ネットワーク、グラフィック)のドライバ二重介在による処理変換のオーバヘッド
だろうなー。ハイパーバイザ型の仮想化ソフトでもこの問題は顕在化しているし、仮想化がIOボトルネックになりやすいと言われる所以でもある。


①CPU特権命令変換によるオーバヘッド
 x86/x64アーキテクチャではring0、1、2、3の4つの動作モードがあり、それぞれの動作モードによってプログラムがアクセスできるメモリ空間を分けている。ring0は主にOSカーネルの特権命令に、ring3はOS上のアプリケーションの命令の際に使用される(ring1、2は現在は使用されていない)。
 しかし、仮想マシンOS上からのring0命令はホストOSから見るとring3命令であり、この命令はエラーになってしまう。ホスト型仮想化ソフトのVMMでは、このエラーを常に監視しており、エラーが出た際は特権命令をVMM上で代理処理(エミュレーション)を行いゲストOSに処理結果を返している。この監視とエミュレーションによってオーバヘッドが生じる。
⇒仮想化支援機能 Intel VT-x、ハイパーバイザ

②CPUメモリアクセスのアドレス変換によるオーバヘッド
 仮想マシンが使用しているメモリアドレスと物理マシンが使用しているメモリアドレスは当然異なる。そのため、VMMは仮想マシンから見えている物理メモリと実際の物理メモリそれぞれのアドレスを変換処理(マッピング)しなくてはならない(実際には仮想マシンの仮想メモリ→仮想マシンの物理メモリ→物理マシンの仮想メモリ→物理マシンの物理メモリという4段階のマッピングw)。このメモリのマッピングにオーバヘッドが発生している。
⇒仮想化支援機能 Intel EPT

③IOデバイス(ディスク、ネットワーク、グラフィック)のドライバ二重介在による処理変換のオーバヘッド
 最近の物理マシンのIOデバイス処理は、DMA(Direct Memory Access:CPUを介さずにデバイスとRAMの間で直接データ転送を行なう方式)によって処理が行われている。しかし、仮想マシンからは本物のデバイスも物理メモリのアドレスも見えない。そのため、仮想マシンからIO処理を行うには、まず仮想マシン上の擬似的なデバイスドライバで処理が受け付けられ、そこから更にホストOS(もしくはVMM)上の実際のデバイスドライバへ処理が変換され、実際のデバイスドライバがIO処理を行うようにコントロールされている。その際の処理変換にオーバヘッドが生じてしまい、IOデバイス性能が仮想マシンを利用した場合落ちてしまう。IO処理の例としては、ディスクIO、ネットワークIO、グラフィック表示等がある。
⇒仮想化支援機能 Intel VT-d、準仮想化

④複数の仮想OSの状態情報切り替え(コンテキストスイッチ)によるオーバヘッド
 複数の仮想マシンが起動していた場合、各OSごとの処理の切り替えをする際、CPUレジスタの状態(コンテキスト)を保存・復元する処理が必要になってくる。この状態情報を切り替える作業(コンテキストスイッチ)も仮想化のオーバヘッドの一つである。 
⇒仮想化支援機能 Intel VT-x、ハイパーバイザ



【仮想化の性能を向上させる3つの技術】
□仮想化支援機能
 仮想化支援機能は、CPUやチップセット等のハードウェアレベルで仮想化技術を支援する技術である。IntelとAMDの技術の2種類があるが、どちらも大まかな働きの違いはないので、下記ではIntelベースで説明。

①Intel VT-x(x86系)、Intel VT-i(Itanium系)、AMD-V
 Intel VT-xでは、「VMX Rootモード」と「VMX Non-rootモード」という、新たなプロセッサの動作モードが2種類用意された。仮想マシンでの通常処理はVMX Non-rootモード(のring3とring0)で動作し、仮想マシンから特権命令が実行され際、VMX RootモードになりVMMに処理が移る。これによって、VMMは仮想マシンの特権命令の監視とエミュレーションをいちいちしなくて済むため、オーバヘッドがある程度軽減される。
 また、Intel VT-xでは仮想マシンのレジスタ内容をVMCS(Virtual Machine Control Structure)と呼ばれる専用テーブルに格納する。VMX non-rootモードで動作していたCPUの状態の保存や読み出しに利用される。これによって、コンテキストスイッチによるオーバヘッドを軽減している。

出展
・Intelの仮想化支援機能「Intel VT」とは?
http://www.atmarkit.co.jp/fsys/kaisetsu/085intelvt/intelvt.html
・仮想化技術の性能を向上させる、ハードウェア仮想化支援機能とは?
http://www.atmarkit.co.jp/fwin2k/tutor/intelvtx/intelvtx_02.html

※ただし、Intel-VTのようなCPUの仮想化支援機能が必ずしも性能向上につながるわけではない。
・VMWare Communities:仮想マシンのモニターモード(VMMの実行モード)を確認する
http://communities.vmware.com/blogs/kkomatsu/2009/07/26/-vmm-
では、下記のように述べられている。


物理CPUによる仮想化支援のうち、CPUコマンドの処理を支援する機能はIntelではVT-xと呼んでいる。ESXがこれまでVT-xをほとんど利用してこなかった理由はいくつかあるが、主だった理由は下記の2つだ。

・特権命令やセンシティブな命令を安全に処理するVMX Rootモードと、一般的なCPU命令を処理するVMX non-rootモードを切り替えるVMEnter/VMExitの際の遅延が大きい (VMCALL/VMRESUMEコマンドの遅延が大きい)
・モードの切り替えの際に、TLB(Translation Look-aside Buffer:CPUが仮想アドレスと論理アドレスとを対応させた情報を一時的に保管しておくバッファメモリ )を完全にフラッシュされてしまう


実際、VMWare ESX 3.5ではIntel VTに対応していないCPUでも使用することができたし(他のハイパーバイザ型仮想化ソフトではIntel VT必須)、VMWare Workstation 6.5でもIntel VTを有効にしても性能はほとんど変わらない。

ジオングに足をつけた程度ということだろう。

②Intel EPT(Extended Page Tables)(Intel VT-xの一部)、AMD NPT(Nested Page Tables)
ページテーブルっていうのは、仮想アドレスと物理アドレスのマッピング情報を格納するテーブルのことで、ページング方式のメモリ管理をしているOSは皆利用している。さらにそれを仮想マシンと物理マシン間でも同じようなの作りましたっていうのがIntel EPT。メモリアドレス変換機構をCPU内に搭載している。

ITproから引っ張ってきたIntel EPTのわかりやすい図↓
イメージ図

③Intel VT-d、AMD IOMMU
 Intel VT-dは、IOデバイスが仮想マシン上からDMAを行うために、仮想マシンと実際の物理メモリのアドレスを自動的に変換する機構(リマッピングエンジン)をnorth-bridgeのチップセットに組み込むことによって(CPU側、チップセット側両方のサポートが必要)、仮想マシンが直接DMAを制御することが可能になる技術である。これによって、IOデバイスを仮想マシン上から直接制御することが可能になり、ディスク、ネットワーク、グラフィック処理の性能向上が期待できる。
※ただし、現在Intel VT-dでサポートされているIOデバイスは、PCI Express接続の機器だけらしい。

 また、IOデバイスを仮想マシンから直接扱うことによって問題もある。それは、仮想マシンでひとつのIOデバイスを占有してしまうため、従来のように複数の仮想マシンで共有することができないことだ。これについての対策として、IOデバイス自体の仮想化のための規格「PCI-SIG I/O Virtualization (IOV)」の開発がPCI-SIGで現在進められている。

 まあ、最近(2009年)市場に出たばかりの技術なので、まだまだ未知の部分は多い・・・

出展
・IDF 2008で見たIntelの仮想化対応策
http://enterprise.watch.impress.co.jp/cda/topic/2008/09/05/13785.html
・第2回 チップ・セットに支援機能を搭載してI/Oを仮想化
http://itpro.nikkeibp.co.jp/article/COLUMN/20061019/251207/?ST=virtual&P=1

Intel社のサイトから引っ張ってきたIntel VT-dのわかりやすい図↓
koumokubetu.png



なお、2009年現在、上記3つの技術はNehalemアーキテクチャのような最新CPUなら大体搭載されている。でも、コンシュマー向けだと搭載されていないのがあったり・・・・
・Intel Core i3とi5-750はVT-d技術未搭載(20090722-7)
http://www.virtualization.info/jp/2009/07/intel-core-i3i5-750vt-d20090722-7.html
自作erの人は買うとき注意だね


参考
・第1回 1985年以来のアーキテクチャを革新する新技術
http://itpro.nikkeibp.co.jp/article/COLUMN/20061010/250154/?ST=virtual&P=1
・仮想化技術を学ぶ
http://itpro.nikkeibp.co.jp/article/lecture/20061228/258010/?ST=lecture&P=3
・仮想化における EPT と VT-d の効果
http://agile-cat-mits.spaces.live.com/blog/cns!684876E6A5CF0AF4!323.entry
・Intel社がネステドページテーブルとI/O仮想化に対応した新CPUとNICをリリース(20090331-1)
http://www.virtualization.info/jp/2009/03/inteliocpunic20090331-1.html
・Ciittrriix XenSerrverr参考資料(PDF)
http://www.viops.jp/viops03-citrix-20090529.pdf
・特集「仮想化の正体」(2) Part2 コンピュータ/「分割」を極め,「結合」の段階に
http://itpro.nikkeibp.co.jp/article/COLUMN/20051125/225202/
・サーバ仮想化機構「Virtage」 I/O 仮想化支援機構
http://www.hitachi.co.jp/products/bladesymphony/virtual/dl/virtage_wp04.pdf

□ホスト型とハイパーバイザ型
仮想化ソフトには大きく分類してホスト型とハイパーバイザ型の2種類がある。
●ホスト型
・代表的なソフト
VMware Workstation/Player、VMware Server、VMware Fusion、Virtual PC、VirtualBox、QEMU
・仮想OSからのデバイスへのアクセス方法
ホストOS上のVMMを経由し、ホストOSを介して処理を行う
・性能
ホストOS上のVMMで処理が行われるため、命令変換のオーバヘッドが大きい
・デバイスドライバ
「実在するハードウェア」をエミュレートして仮想環境を実現するため、(そのハードウェア上で動くOSなら)基本的にどんなOSでも動く。エミュレーションにはたいてい古いハードウェアを用いているため、デバイスドライバはたいていOSの標準ドライバで事足りる。
・CPUリソースのパーティショニング
ホストOS上のCPUリソースをゲストOSに割り振るため、ホストOSとゲストOSのCPU使用率が互いに影響しやすい

●ハイパーバイザ型
・代表的なソフト
VMWare ESX/ESXi、Xen、Hyper-V、KVM
・仮想OSからのデバイスへのアクセス方法
ハードウェアとOSの間のレイヤに存在するハイパーバイザと呼ばれるVMMを介して処理を行う
※Xenでは、ホストOSに相当するドメイン0のドライバを経由することによって、ゲストOSに相当するドメインUからのデバイスアクセスが行われる。
※Hyper-Vでは、ホストOSに相当するペアレントパーティションのドライバを経由することによって、ゲストOSに相当するチャイルドパーティションからのデバイスアクセスが行われる。

・性能
ハイパーバイザ上のVMMで処理が行われるため、命令変換のオーバヘッドが小さい
・デバイスドライバ
VMWare ESX/ESXiの場合、ハイパーバイザにハードウェアを制御する専用のデバイスドライバが必要なため、使用できるデバイスに限りがある。Xen、Hyper-Vは、ホスト型仮想化ソフトと似たようなドライバの使い方をするため、基本的にはOS標準ドライバで事足りる。
・CPUリソースのパーティショニング
ハイパーバイザ上でCPUリソースが論理的に区分けされるため、仮想マシン同士のCPU使用率の影響が少ない
(これは自分の推測ではあるが、ハイパーバイザでCPUリソースが綺麗にパーティショニングされることによって、コンテキストスイッチによるオーバヘッドもホスト型に比べ少なくなっているのではないかと考えている。プロセッサアフィニティのように、割り当てたCPUのスレッドをずっと保持したまま使用するようになるので。)

※Xen、Hyper-V、KVMは場合によっては(ホストとハイパーバイザの)ハイブリッド型として分類されることもある

参考
・【仮想化の教室 第4回】 仮想化の進化 ~ハイパーバイザとは?~
http://www.computerworld.jp/topics/mws/155890.html
・仮想化はうさんくさい? 仕組みから仮想化を理解する
http://enterprise.watch.impress.co.jp/cda/virtual/2009/04/13/15256.html


□完全仮想化(Full Virtualization)と準仮想化(Para Virtualization)
完全仮想化=ホスト型仮想化ソフト
準仮想化=ハイパーバイザ型仮想化ソフト
と勘違いしていた・・・・。
あくまで違いは、使用する仮想OS。準仮想化のほうが、仮想化用にカーネルやドライバが最適化されているため高い性能がでる。ただし、ドライバの改変も準仮想化に入れてしまっているのは俺の考えなので、定義が間違ってたらごめんなさい。

●完全仮想化
・概要
実機でも使用する一般のOSを、改変なしにそのまま使用する方式
・OS
全て。Windows系OSは全てこちらの方式(ただし、デバイスドライバレベルではWindowsも準仮想化に対応したものがある)
・デバイスドライバ
OS搭載標準ドライバ

●準仮想化
・概要
仮想環境で動かすことを前提に改変されたOSを使用する方式
・OS
仮想化用にカーネルが最適化されているLinux系OS
・デバイスドライバ
仮想化用に最適化されたドライバ
(VMWareのVMWaretoolsやHyper-Vの統合パッケージ等も含む)

参考
・【仮想化の教室 第6回】 デバイスの仮想化 ~準仮想化デバイスと完全仮想化デバイス~
http://www.computerworld.jp/topics/mws/157229.html
・【仮想化の教室 第7回】 仮想化のコラボ ~Xenの準仮想化仮想マシンをHyper-Vで動かす~
http://www.computerworld.jp/topics/mws/157869.html
・記事:完全仮想化されたゲストOSのI/O性能を向上させるpara-virtualized driver
http://www.jp.redhat.com/magazine/jp/200806/rhel.html
スポンサーサイト
  1. 2009/12/29(火) 04:08:16|
  2. 仮想化
  3. | トラックバック:0
  4. | コメント:0

仮想マシンの性能

ホスト型仮想化ソフトを利用した場合の仮想マシンの性能をベンチマークソフトを用いて試験してみた。

●結論
CPU・メモリ能力はホスト型仮想化ソフトでも8~9割の性能がでるという結果になった。ただし、8~9割というのはベンチマーク結果での比較であり、システム全体の性能を表しているわけではないことにご注意頂きたい。システム全体の性能を見るには、負荷時でのスループットやホストOS上からのリソース使用状況等、観点を変えて見る必要があるため、今回の結果はあくまで参考程度に見てもらいたい。

また、HDDの能力については、ゲストOSではシーケンシャルリードライトの性能がホストOSの6~7割程度、ランダムリードライトの性能はホストOSの7~9割程度の結果となった。仮想マシンのランダムリードライトの性能が比較的高いのは仮想HDDの領域がホストOSの物理メモリにのっかっているからだろうか???原因は不明。

グラフィック性能については、いずれの仮想化ソフトも1~4割程度の性能しかでていない。正直これについては、ベンチマークの手法によって結果が大いに異なってしまっているため一概に言うのは非常に難しい。一応ゲストOS上でYouTubeのフルハイビジョン動画は普通に見れるw

なお、利用した仮想化ソフトによる性能の顕著な差は見られなかった。

●環境
・ホストOS
Windows 7 RC 64bit
・ゲストOS
Windows 7 RC 32bit
※ゲストOSはインストール直後の状態
※VMWareTools等をインストールし、ゲストOSのドライバは仮想化用に最適化
※仮想HDDは事前割り当て20GBの容量
※CPU割り当て数2、メモリ割り当て量2GB

●利用仮想化ソフト
・VMWareWorkstation 6.5
・VMWareWorkstation 7.0
・VirtualBox 3.0.10
※いずれのソフトでも上記環境の状態を設定している

●試験方法
ホストOS、ゲストOS上で極力不要なアプリケーションを止め、ゲストOS上で
CrystalMark 2004R3
http://crystalmark.info/software/CrystalMark/
を3回走らせてその平均値を取得する。

●試験結果
・CrystalMark 2004R3の総合得点の比較(縦軸はゲストOSでのベンチマーク値/ホストOSでのベンチマーク値)
sougou.png



・CrystalMark 2004R3の項目別得点の比較(縦軸はゲストOSでのベンチマーク値/ホストOSでのベンチマーク値)
左から順に赤線を跨いで、CPU(四則演算)、CPU(浮動少数演算)、メモリ(MB/s)、HDD(MB/s)、グラフィック(GDI)、グラフィック(DirectDraw)、グラフィック(OpenGL)の性能項目
koumokubetu.png

※VirtualBoxでのHDDのベンチマーク値はホストOSの2~3倍の値になり、明らかに異常値であったため除外している。
  1. 2009/12/15(火) 01:36:45|
  2. 仮想化
  3. | トラックバック:0
  4. | コメント:1

iphoneをSIMロック解除してdocomo3G回線でネットする方法

対象OS:3.1.2

1 Blackra1nで脱獄する
詳しい手順は下記参照
iPoday:blackra1n - OS3.1.2のiPod touchをjailbreak for Windows
http://www.ipoday.net/jailbreak/blackra1n.html


2 iphone上のCydiaからBlacksn0wをインストールする
詳しい手順は下記参照
iPhone 3G、3GSのOS 3.1.2をSIMフリーにするBlacksn0wリリース
http://soundsgood.cocolog-nifty.com/blog/2009/11/iphone-3g3gsos-.html

以上でSIMロック解除完了。なお、OS 3.1.2より前ではultrasn0wなどが利用できたが、OS3.1.2でultrasn0wをインストールするとSIMを認識しなくなるのでご注意を(アンインストールで元に戻る)。


3 docomo SIMに入れ替える
この時点で認識されれば、通話はできる状態になっている。
当然ながら、imodeは使えないのでインターネットへアクセスはできない。
そのため、3G回線を使ってネット接続するためにはdocomoが提供している3G回線用ISPに別途加入しなくてはならない。
それがモペラである。

4 MydocomoでモペラUに加入する
電話やドコモショップでも加入できるが、Mydocomoから行くのが一番手っ取り早い

mopera Uサービスのお申込み方法
http://www.mydocomo.com/web/howto/mopera01.html#jyuuryousenyou

mopera Uには2種類のコースがあって、どちらでもiphoneで利用できる。
・U スタンダードプラン
・U ライトプラン

2009年12月1日(火)~2010年4月30日(金)で現在キャンペーン中で
・U スタンダードプラン 税込525円 ⇒ 税込262.5円
・U ライトプラン 税込315円(ご利用月のみ) ⇒ 0円
のような価格になっている。
また、スタンダードプランに加入すると、2010年4月30日(金)まで無料でドコモの公衆無線LANサービス(Mzoneと同じエリア)を利用できる。東京の主要な駅ではたいてい利用できるので、wifi接続で主に利用しようと考えている人にはお勧めだ。

モペラU キャンペーン
http://www.mopera.net/service/plan/news.html


5 モペラのユーザID、パスワードの確認
モペラに加入後、ドコモ携帯にSMSでID確認サイトのURLが記述されたメールが届くので、そのリンクからユーザIDとパスワードを確認しにいく。必要であれば、ID、パスワードの変更も行っておく。


6 Mydocomoでパケホーダイサービスに加入する
iphoneでパケット通信をするとあっというまにパケット使用量が跳ね上がる。そこで、パケホーダイ等のサービスに事前に加入しておく必要がある。お勧めコースはパケホーダイダブルだ。

・パケホーダイダブル(旧料金体系の場合はパケホーダイシンプル)
iphone利用の場合の料金 372円(税込390円)~13,000円(税込13,650円)
ただし、下記アクセスポイントを使用することで、速度は128kbpsに制限されるが料金上限が5,700円(税込5,985円)になる。
>FOMA 128K通信専用アクセスポイント mpr.ex-pkt.net(128K通信用対応)


Bizホーダイダブルも、パケホーダイと同じ料金だが、
128K通信専用アクセスポイント mpr.ex-pkt.net
を利用しても、上限5,700円(税込5,985円)の恩恵を受けることが今のところできない。
(そもそもBizホーダイで上記アクセスポイントを利用できるのだろうか・・・・)

パケ・ホーダイ ダブルとは
http://www.nttdocomo.co.jp/charge/discount/pake_hodai_w/about/index.html
mopera U アクセスポイント
http://start.mopera.net/contents/noauth/access/accessPc.html

7 iphoneにアクセスポイントの設定を行う
設定>一般>ネットワーク>パケット接続 で

APN:mpr.ex-pkt.net( 128K通信専用以外のアクセスポイントを使用するのであればそれを指定する)
ユーザ名:5.のユーザ名
パスワード:5.のパスワード


を設定する。
以上で設定は完了。iphoneでdocomo3G回線を利用してのネット接続が可能となる。



なお、パケホーダイダブルでは4650パケットまでの利用が定額390円以内、71250パケットまでは従量課金で、それ以降は5985円で定額である(128K通信専用AP利用の場合)。
http://www.nttdocomo.co.jp/info/news_release/page/090806_00.html

1パケット=約128バイトと考えると、

581KBまでは390円
8.7MBを越えた時点で上限5985円


ということになる。
今時8.7MBて・・・・
こんなのすぐ超えてしまうわw
しかもiphoneはメールのプッシュとかで勝手に通信するのでどんどん使用通信料が増えていく。8.7MB以下に抑えるには、EDGEを無効にするなど強制的なパケット通信制限を設けないと無理だろう。



そんなわけで、結局、docomo携帯+SoftbankSIMのiphoneが一番お得だということだ。
でも、携帯2台も持ちたくねえwwっていう人には月2000円くらい多く払ってdocomo3G回線を利用するのもありかもしれない。もしかしたら、頑張ってパケット通信制御すれば通信料390円で収まるかもしれないし。


参考
・docomoでiPhoneを使おう!
http://sites.google.com/site/iphoneondocomo/home
  1. 2009/12/07(月) 03:23:11|
  2. モバイル
  3. | トラックバック:0
  4. | コメント:0

ipod touchのデータが全部消えた\(^o^)/

OS再インストール後のiphone/ipod touchのiTunesとの同期には十分注意して頂きたい。
データのバックアップがないと、空のiTunesがipod touchと同期して、アプリのデータが全部消えるので。
音楽データだと「データが全部消えるぞ!」って警告がでたが、アプリには何も警告がでなかったので大丈夫だろうとボタンをぽちぽち押してたら、アプリのデータが気づいたら全部消えてたw

ああ、半年分の家計簿データが・・・

ということで、皆さんもOS再インストール後のiTunesとの同期にはくれぐれもご注意を。
対策としては、ざっと調べたところ、アプリのバックアップファイルを丸ごと保存しておいてOS再インストール後もとの場所に置いておく、なのかな。未確認だけど。

↓空になったipod touchの図。なぜかcydiaは残ってたり。
ipod.png
  1. 2009/12/03(木) 01:24:12|
  2. モバイル
  3. | トラックバック:0
  4. | コメント:1
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。