nkjmkzk.net

powered by Kazuki Nakajima

Archive for 3月, 2010

PVMとPVHVMの性能比較

PVMとは準仮想マシンのことで、より高性能を求めてカーネルがゲストOS専用に改造されています。

一方、HVMとは完全仮想マシンのことで、カーネルには何ら手が加えられていません。

これまでは単純にPVMとHVMの性能を比較すると圧倒的にPVMが勝っていました。HVMで最も性能劣化が顕著なのは下記2点です。

  • ネットワーク、ディスクI/O
  • メモリ管理

しかしネットワーク、ディスクI/OについてはHVMであっても実はPVドライバを別途インストールすることでPVMと遜色ない性能を確保することが可能でした。

*このHVMにPVドライバをインストールした仮想マシンのことを属にPVHVMと呼んでいます。

問題だったのはメモリ管理です。HVMのゲストOSのメモリアドレスから物理メモリのアドレスを求めるときのオーバヘッドが非常に大きかったのです。しかし実はこれも状況が変わってきています。Intelのコードネーム:Nehalemと呼ばれている新しい(といってもリリースされてもう久しいが)アーキテクチャのCPUは仮想化支援機構を強化しています。その目玉がEPTという機能で、先ほど大きなオーバーヘッドであると言ったHVMのメモリアドレス変換処理を高速化するための機構です。

*ちなみにEPTはHVM用の機構なのでPVMには影響しません。

実際このEPTの効果は様々なテストによって非常に大きいと言われています。そもそもPVMではこのメモリ変換処理を、改造したカーネルによってオーバヘッドを緩和していました。HVMではHypervisorがゲストOSの素のカーネルから発行される物理メモリへのアクセスをトラップして実際のアドレスに修正するというタフな処理を行っていたのでオーバヘッドが大きかったのですが、それがEPTによってHypervisorはそのトラップ&変換処理をCPUに任せることができるようになりました。

そこで気になるにはどれくらい速いのか? ですよね。

ということでEPTの効果が如実に現れるという噂のソフトウェアのコンパイル処理をPVMとPVHVMで行いました。

環境

  • 物理CPU:Core i7 860(クアッドコア & Hyper-Threading)
  • Hypervisor:Xen 3.4
  • ゲストOS:Enterprise Linux 5u4 64bit(vCPUを4つ割り当て)
  • カーネル:2.6.18-164

テスト内容

  • php-5.3.1をmake -j8として8スレッドでコンパイルし、所要時間を計測

結果

  • PVM:55秒
  • PVHVM:46秒

ということで確かにPVHVMの方が高速です。HVMがPVMを性能面で上回るというのは以前は考えられないことでしたがEPT恐るべし、です。

これからはXenであってもゲストOSはHVM(PVHVM)を選択することも視野に入れねばなりませんね。

with one comment

Written by 中嶋 一樹

3月 25th, 2010 at 10:25 pm

Posted in Uncategorized

Tagged with ,

Oracle 11g R2に最適化したOEL 5.4 VMテンプレート

Oracle Enterprise Linux 5.4 x86_64 PVMのVMテンプレートを作成しました。

Oracle_Enterprise_Linux_5u4_64_for_11gR2.tar.bz2

このテンプレートにはOSしか入っていません。が!少しいじってあります。一番のカスタマイズは次の点です。

  • Oracle 11g R2がすぐにインストールできる

11g R2とは、Grid InfrastructureとDatabaseのことです。Storage GRIDでキーポイントとなるASMはGrid Infrastructureをインストールすることで使えるようになります。

  • このテンプレートをダウンロードしてVM Server上で起動する
  • Grid InfrastructureをOTNからダウンロードして先ほど起動したVMにインストールする

としていただくことでASMが利用可能になります。ASMが使えるということは11gR2から追加されたACFS(ASM Cluster Filesystem)も使えます。ちなみにACFSとはこういうものです。

  • クラスターファイルシステム
  • 物理ディスクまたはLUN -> DISKGROUP -> ボリューム -> ファイルシステムというアーキテクチャ
  • 動的にファイルシステムサイズを変更可能
  • 動的に物理ディスクを追加/削除することが可能
  • ディスク構成が変更されるとデータの再配置(リバランス)を行う
  • データの冗長性を選択できる[冗長化なし | 2重化 | 3重化] 2重冗長以上であればディスクが壊れてもオンラインで運用継続
  • スナップショット機能装備

現在これらの機能を全て備えたファイルシステムはACFSだけでしょう。まだあまり名前が売れてないのですが、結構すごいファイルシステムなのです。

通常11gR2のGrid InfrastructureやDatabaseをインストールするには追加のパッケージをインストールしたりカーネルパラメータをいじったりntpの設定ファイルを編集したりudevのルールファイルを編集したりしなきゃいけないわけですが、このテンプレートを使えば11g R2の前提条件チェックを一発でパスします。というわけでこれからASM、ACFSを触ってみたい!とかいう方にお薦めです。(本当はGrid Infrastructureのインストーラもテンプレートに含めておきたいのですが、そこはソフトウェアの配布規約上不可でした。無念)

使い方は以下の通り。

  • VM Serverの/OVS/seed_pool以下にテンプレートをダウンロードし、展開する
  • VM Managerからインポートする
  • VM Managerでこのテンプレートから仮想マシンを作成する
  • 仮想マシンを起動する(初回起動時にIPアドレス2つといくつかのネットワーク設定を入力します)
  • Grid Infrastructureをダウンロードしてインストールする(runInstaller.shを実行するだけ。事前の環境設定は必要なし。)

VM Manager使うのが面倒な人はテンプレートを/OVS/running_pool以下に保存して展開し、vm.cfgのdiskパスだけseed_poolからrunning_poolに変えていただければxm create vm.cfgでそのまま起動可能です。ただしNICが2個あることが前提のネットワーク設定になっているのでVM ServerにNICが一つしかない場合にはbridge=xenbr1の方のVIF設定を削除する必要があります。

このテンプレートは他にも地味にいくつかカスタムしてあります。rlwrapがインストールされていてoracleユーザの.bashrcにalias sqlplus=’rlwrap sqlplus’と勝手に入れてあったり、とか。4GByte程あるのでダウンロードにそこそこ時間がかかると思いますが、ASM、ACFSを試してみたい方は是非どうぞ。

*ちなみに解凍後のサイズは20Gbyte強になります。rootのパスワードは’oracle’です。

without comments

Written by 中嶋 一樹

3月 11th, 2010 at 11:03 pm

Posted in Uncategorized

Tagged with , ,