VirtualBox 5.0が登場しました。
プレスリリースによると次のような特徴があります。
- WindowsとLinuxゲストの準仮想化のサポート
- CPU使用の改善。CPUの命令が増えています。
- USB 3.0のサポート
- Windowsのドラッグアンドドロップのサポート
- ディスクイメージの暗号化
Linuxゲストの準仮想化をサポートするというので、早速インストールしてみました。
前回にも書きましたが、Linuxゲストの準仮想化はXenのように準仮想化専用のカーネルを動かすのではなく、準仮想化インターフェースに機能を提供してエミュレーションの精度をあげるものです。
Linuxゲストには、KVMタイプとして準仮想化クロックとSMPスピンロックが提供されます。この準仮想化クロックを確認してみます。
今回はUbuntu 12.04ゲストで確認しました。
まずは順番にインストールしていきます。
- VirtualBox 5.0のインストール
- Extenstion Packのインストール
- ゲストOSを起動してGuest AdditionsをゲストOSにインストール
- 一度シャットダウンして、仮想マシンの設定で、システムー>アクセラレーション準仮想化インターフェースで、KVMもしくはデフォルトを選びます。デフォルトはゲストOSのタイプによって提供するインターフェースを変えてくれます。
- ゲストOSの起動
起動したら、dmesgで起動時のメッセージを確認します。
$ dmesg |grep KVM
[ 4.515926] Booting paravirtualized kernel on KVM
このようにon KVMとでていれば成功です。
同様にkvm-clockを確認することで準仮想化クロックを使っていることが分かります。
$ dmesg |grep kvm-clock
[ 0.000000] kvm-clock: Using msrs 4b564d01 and 4b564d00
[ 0.000000] kvm-clock: cpu 0, msr 0:1cf9781, boot clock
[ 4.516128] kvm-clock: cpu 0, msr 0:7fc12781, primary cpu clock
[ 4.730889] kvm-clock: cpu 1, msr 0:7fd12781, secondary cpu clock
[ 4.798499] Switching to clocksource kvm-clock
もし、kvm-clockなんて出てこなかったらkvm-clockがシステムに存在するか次のように調べます。
$ cat /sys/devices/system/clocksource/clocksource0/available_clocksource
kvm-clock tsc acpi_pm
もし、なければカーネルにCONFIG_PARAVIRT_CLOCKが設定されていたか調べます。
$ less /boot/config-hogehoge
CONFIG_PARAVIRT=y
CONFIG_PARAVIRT_SPINLOCKS=y
CONFIG_PARAVIRT_CLOCK=y
こうなっていなければ、準仮想化クロックは使えません。CONFIG_PARAVIRT_CLOCKがあって、kvm-clockがないときは、VirtualBoxがインターフェースを提供できていないです。
準仮想化クロックを使うことで時間の精度が上がります。でも、ゲストOS上でもNTPを使ったほうがよいようです。
KVMにおいて ホストとゲストの時間管理はNTPを用いるべきか?
準仮想化クロックと共に提供されるSMPスピンロックはマルチCPUでたくさんのプロセスを同時に起動したときの効率を高めてくれるものです。
ベンチマークを取らないと確認できないと思います。
ネットワークやディスクのアクセスも改善されるのかも確認が必要ですね。
以上、準仮想化クロックについて確認してみました。