質問: VirtualBox は、仮想マシンを立ち上げる際に、ゲストOS のメモリのサイズを指定できます。安直に考えると、 VirtualBox デーモンは、立ち上がると同時にこれだけのメモリ量を確保し、それをゲストで使いまわす、というような構成になると思います。 一方で、実際に VirtualBox で仮想マシンを立ち上げた状態で、ホストOS においてタスクマネージャーを実行してみると、仮想マシンに割り当てたメモリ量を使用しているようなプロセスは、存在しないように見受けられます。これまで VirtualBox を扱ってきた中で、そういったプロセスが存在した記憶がないです。 なので、ゲスト側で必要になった分だけ、ホストでメモリを確保する仕組みが VirtualBox にあるのではないか、と思っています。 質問 -- 1. この機能は、 VirtualBox に組み込みの機能でしょうか。(すべてのホスト・ゲストでこれは想定できる?) 2. この機能に名前はついていますか?いまいち何をどう調べたらいいのかわからずにいるので。。 上記の挙動を確認した環境 ------------ * Windows 10 * Intel Core i5-4570 * Virtualbox 5.1.8r111374
回答: 質問を下記のように読み替えさせていただきます。 Q. VirtualBox でゲスト OS に 1GiB のメモリを割り当てて起動したが、ホスト側のプロセスに 1GiB のメモリを消費しているものが見つからない。なぜでしょう? A. ホスト OS (Windows 10) の「タスクマネージャ」で見ている「メモリ」が「プライベートワーキングセット」の大きさだからです。 タスクマネージャ上の操作 Windows 7 の場合は [プロセス] タブ→表示(&V)→列の選択(&S) Windows 10 の場合は [詳細] タブ→1行目の上で右クリック→列の選択 とすると、「メモリ」にも多くの種類があることがわかります。 標準では「プライベートワーキングセット」が選択されています。これの意味合いは - そのプロセスが今使用している物理メモリ量、他プロセスと共有しないもの (その意味で真にメモリ使用量です) 「コミットサイズ」という項目もあります。これの意味合いは - そのプロセスが OS に対して要求したメモリ量 いわゆる仮想記憶サイズ。要求に対して OS は、物理メモリを割り当てたかもしれないし、ただアドレス空間を予約しただけで物理メモリは割り当てていないかもしれないし、スワップに割り当てたかもしれない。 VirtualBox にて 1GiB のゲスト OS を起動すると、「コミットサイズ」に 1GiB (実際にはもっと多くのメモリが割り振られます) のプロセスが発生します。このとき「プライベートワーキングセット」は 1GiB より小さいのが普通です。 この挙動は仮想記憶機構を採用している OS としてはごく普通の動きだと考えてよいです。 VirtualBox が特別な動きをしているとか、そういうことはありません。 参考