マザーボード

VirtualBoxのシステム設定-マザーボード設定の画面

メインメモリー

ゲストOSが使用するメインメモリの量を設定します。
ゲストOSをインストールした後でも、メモリ量を変更することが出来ます。

起動順序

バーチャルマシンのブートデバイスの順序を設定します。
特に変える必要はありません。

ネットワークブートをする際にはコマンドラインで設定を行う必要があります。

チップセット

従来のPIIX3とICH9を選べます。

MacOSXなどは古いチップセットであるPIIX3をサポートしないようなので、ICH9を使います。
また、ICH9では PCI express, three PCI buses, PCI-to-PCI bridges, Message Signalled Interrupts (MSI) などをサポートします。

しかし、いまだ実験的なサポートなので、MacOSXなど、ゲストOSが必要としない限りはPIIX3を選んでください。

ポインティングデバイス

「PS/2 マウス」「USBタブレット」「USB マルチタッチタブレット」の3つからポインティングデバイスのエミュレートを選べます。

IO APICを有効化

IO APIC(Advanced Programmable Interrupt Controller) は、I/Oデバイスから受け取った割り込みをCPUへ通知するための機能です。
64bitのゲストOSや、1つのバーチャルマシンに複数のCPUを割り当てる場合にはこの機能を有効にしてください。

(注意)
IO APICのソフトウェア処理はWindows以外のOSに対して信頼性があまり無い他、多少のオーバーヘッドがあるようです。
Windows以外のOSでの有効化には注意が必要です。

(注意)
Windows2000以降のWindowsについては、I/O APICが有効/無効かによって異なるカーネルをインストールします。
したがってWindowsのインストール後にこの設定を変更しないでください。

EFIを有効化

VirutalBoxでは3.1からEFIをサポートしました。
ただし、EFIを使用するにはゲストOSの対応が必要です。

起動時に「F12」キーを押すとEFIのメニューが表示されます。

ハードウェアクロックをUTCにする

仮想マシンは起動時にホストマシンと時刻の同期を行いますが、これをUTCで同期させます。

プロセッサー

VirtualBoxのシステム設定-プロセッサ設定の画面

プロセッサ数

ゲストOSが使用するプロセッサ数を設定します。
プロセッサ数と言うより、使用するコア数と言ったほうがいいかもしれません。

VirtualBoxはSMP(symmetrical multiprocessing)に対応しており、最大32の仮想CPUを割り当てることができます。

ホストマシンが搭載しているコア数以上を設定可能ですが、パフォーマンスが良くなるどころか、かえって悪くなってしまうようです。
ホストマシンの持っているコア数-1(ホストOS分の-1です)以下を設定しましょう。

また、ゲストOSのインストール後にプロセッサ数を変更しても、OS側に認識されない場合があります。(Windowsなど)
必ずゲストOSのインストール前にプロセッサ数を変更します。

一部のサーバOSについてはCPUのホットプラグ機能が使えることがあります。

使用率制限

単一のホストCPUコアに対するゲストCPUコアの時間占有率を設定します。
簡単に言うと、100%に設定すると割り当てたホストCPUコアを100%使うことができて、50%に設定するとホストCPUコアを50%までしか使うことができなくなるよ、という事です。

ただし、ゲストCPUコアを制限するとゲストのタイミング問題(?)を引き起こす可能性があるので注意が必要です。

PAE/NXを有効化

PAE(Physical Address Extension)とは、物理アドレス拡張機能のことで、4GB以上のメモリーを搭載しているマシンでこれらのメモリを正常に認識するための機能です。
32BitのWindowsOSでのみ有効となり、64BitではPAEをサポートしていません。

英文のUsers Manualによると、32bitのメモリアドレスに4bitを足して、最大4GBまでだったメモリアドレスを64GBまで拡張する技術だそうです。(多分)
Ubuntu Serverには必須の機能なんだそうです。
いずれにせよ、ホストマシンが4GB以上のメモリを積んでいて、且つホストOSが32bitで、且つUbuntu ServerをゲストOSとしてインストールしない限りあまり関係無さそうな機能です。

ただ、チェックを外すとどうなるかは、32Bitマシンに4GB以上のメモリを積んだ環境を持っていないので不明です。
デフォルトのままでいいと思います。

アクセラレーション

VirtualBoxのシステム設定-アクセラレーション設定の画面

準仮想化インターフェース

Oracle VM Virtualboxは計時制度とゲストOSのパフォーマンスを向上させるための準仮想化インターフェースを提供しています。

準仮想化とは

コンピュータのハードウェアをソフトウェアでエミュレートするものを完全仮想化と呼びます。
それに対して準仮想化というのはハードウェアのエミュレーションを行わず、APIを通して実ハードウェアを操作することを言います。

ハードウェアをエミュレーションするのは非常に重い処理となる完全仮想化に比べ、準仮想化はハードウェアをエミュレーションすることがないため、完全仮想化と比較してパフォーマンスが向上します。

ただし準仮想化の機能を利用するためには準仮想化用にカスタマイズされたOSを使用する必要がありますが、最近のOSのほとんどは対応しているようです。

VirtualBoxは準仮想化として以下の方式を提供しています。

  • Minimal
    仮想環境を提供していることを通知し、TSC(Time Stamp Counter)及びAPICの頻度をゲストOSに報告します。
    このインターフェースはMacOS Xゲストを実行するために必要です。
  • KVM
    Linuxのカーネル2.6.25以降で認識されるKVMハイパーバイザーインターフェースを提供します。 VirtualBox準仮想化クロックとSMPスピンロックをサポートしています。
    このインターフェースはLinuxゲストにお勧めです。
  • Hyper-V
    Windows 7以降のオペレーティングシステムで認識されるMicrosoft Hyper-Vハイパーバイザーインターフェイスを提供します。
    準仮想化クロック、APIC頻度レポート、ゲストデバッグ、ゲストクラッシュレポート、リラックスしたタイマーチェックをサポートしています。
    このインターフェースはWindowsゲストにお勧めです。

VT-x/AMD-Vを有効化

VT-X(Intel Virtualization Technology)とAMD-V(AMD Virtualization) という、ハードウエア仮想化支援機能を有効にするか設定します。

ハードウエア仮想化支援機能は、通常VirtualBoxがソフトウェアで処理している資源要求などの割り込みを、ハードウェアで効率的に処理を行います。

64BitのゲストOSやOS/2をゲストOSとする際にはこの機能を有効にする必要がありますが、VirtualBoxは常に仮想化支援機能を必要としているわけではないようです。

この機能を使うにはホストマシンのCPUがハードウエア仮想化支援機能をサポートしていないと意味がありません。
また、BIOS側でも仮想化支援機能を有効にする必要になります。

ハードウエア仮想化支援機能を有効にするとパフォーマンスが落ちる、と書いてある場合がありますが、検証していないためわかりません。
(有効で無効でも体感的に変わらないような・・・・)

ネステッドページング

AMDのBarcelona(K10)から実装する、バーチャルマシンの仮想メモリからホストマシンの物理メモリへの二段階の変換を行うハードウェア支援機能を有効にします。
Intelでは同様の機能をExtended page tables(EPT)として、Core i7(Nehalem)から実装しています。

ネステッドページングが有効にできるなら、VBoxmanage modifyvm –largepagesコマンドでハイパーバイザーの性能が5%ほど向上します。