web-dev-qa-db-ja.com

仮想マシンは、物理ホストマシンでRAMをほとんど消費しないのですか?

2GBのRAMを搭載したWindows XPマシンでVirtualBoxを実行しています。仮想Ubuntuマシンを作成し、750MBのベースメモリを割り当てました。

テストするために、仮想マシンで一度に20個の処理を実行しました。 ubuntuの「トップ」によると、750メガバイトのメモリとかなりのスワップスペースが使用されていました。

ただし、Windowsタスクマネージャーに戻ると、VitrualBoxは45,000Kのメモリしか使用していませんでした。仮想マシンにどんどん実行するように依頼すると、VirtualBoxプロセスのCPU使用率は(Windowsでは)上昇しましたが、メモリ使用量は同じままでした。

750 MBのメモリを使用している仮想マシンは、物理マシンで45 MBのメモリしか消費できないのでしょうか。

答えは、仮想マシンが実際のメモリではなく、シミュレートされたメモリ(つまり、スワップスペース)を使用しているということだと思いますが、RAMで実行されているように感じます。

更新:私は提案されたようにperfmonで遊んだ。私が考えることができるすべてを要約しても、それはまだ300メガバイト未満を占めるようです...それでそれはまだ謎です。

Process               VirtualBox     VirtualBox#1     Total
PoolNonpagedBytes     5,840          42,552           48,392
PoolPagedBytes        119,796        166,892          286,688
PrivateBytes          8,884,224      52,719,616       61,603,840
VirtualBytes          75,939,840     161,202,176      237,142,016
Sum                   84,949,700     214,131,236      299,080,936
24
dggoldst

タスクマネージャーの列は誤解を招く数値を示す可能性があります。プロセスごとの正確なメモリ使用量については、perfmon(コントロールパネルのパフォーマンスモニター)を使用して「プライベートバイト」の数値を確認できます。

これを表示するには、perfmonに移動し、クリックしてカウンターを追加します(私は Ctrl+I 一種の人)。 「パフォーマンスオブジェクト」は「プロセス」であり、「プライベートバイト」はカウンターリストにあります。明らかに、右側のリストから関連するプロセスを選択する必要があります。

7
Rowland Shaw

Linuxでの一部の仮想化ソリューションでは、メモリを割り当てる方法により、ホストカーネルに特別なメモリマップファイル(/proc/kcore特別ファイルのように)として表示されるため、の「キャッシュ」カウントにカウントされます。 「使用済み」カウントではなく、freeからの出力。

Windows環境でも同様のことが起こっていると思います。45MbはVirtualBoxの管理プロセスで使用され、VM自体に割り当てられた750は他の場所でカウントされます。

5
David Spillett

タスクマネージャーを信じないでください。すべてを見ることができません。

この問題はSQLServerでより一般的に見られます たとえば Sqlでは、タスクマネージャーから正確な情報を取得する方法を教えてくれた人を見つけたことがありません。 t他の列の1つに隠されています。

0
sgmoore

それは、仮想メモリ、メモリマップトファイル、または同様のものである可能性があります。

タスクマネージャで他の列を表示してみましたか?

0
zildjohn01