2011-07-06 17 views
14

メモリグラフプロセスエクスプローラで、上のグラフはコミット履歴を示します。これは実際にOSレベルで何を示していますか?プロセスエクスプローラ:コミット履歴グラフには何が表示されますか?

これがプロセスによってヒープに割り当てられたメモリであるかどうかをテストするために、私は100 MBを何度も段階的にmalloc化した小さなプログラムを作成しました。コミット履歴グラフはしばらくの間増加し(1.7 GBまでのメモリ割り当て)、プログラムをメモリに割り当ててもそれ以降は増加しませんでした。

このグラフは何を示していますか?この情報をWindowsの状態を理解/分析するためにどのように使用できますか?

答えて

20

コミットレベルは、システム内のすべてのプロセスに割り当てられた匿名仮想アドレス空間の量です。 (mmap'dファイルなどの、ファイルバックアップされた仮想アドレス空間は含まれません)。プロセスエクスプローラでは、 'Commit History'グラフに時間の経過とともにこの値のサイズが表示されます。

仮想メモリが割り当てられ、分割される方法(仮想アドレス空間のページをバッキングする実際のRAMは、最初にタッチされるまで必ずしも割り当てられるわけではありません)のため、この現在の「コミット」レベルは、システムが思い付くかもしれないメモリの瞬間)。 Linuxとは違って、WindowsはRAMのための約束(アドレス空間)を渡すことも、偽装することも(ページングファイル経由で)行うこともできません。したがって、コミットレベルがシステムの制限(大まかにRAM +ページングファイルサイズ)に達すると、新しいアドレス空間の割り当ては失敗します(しかし、既存の仮想アドレス空間領域の新しい使用は失敗しません)。

あなたはこの値から引くことができ、あなたのシステムに関するいくつかの結論:

  • この値は、あなたの現在のRAM(カーネルお​​よびシステムのオーバーヘッドを除く)に満たない場合は、お使いのシステムは交換する非常に低いです(最悪の場合、すべてがメモリに収まるはずですので、ページングファイルを使用してください)。
  • この値が物理メモリの使用量よりもはるかに大きい場合、プログラムによっては多くの仮想アドレス空間が割り当てられていますが、まだ使用されていません。
  • アプリケーションを終了すると、すべての仮想アドレス空間がクリーンアップされるため、コミットされたメモリ使用量が削減されます。

あなたの実験でこれが検証されました。私はあなたがアドレス空間の制限に遭遇したと考えています(ウィンドウ内の32ビットプロセスはlimited to 2GB ...おそらく300MBはフラグメンテーション、ライブラリ、テキストに消えてしまいましたか?)。

+2

"この値が物理メモリの使用量よりもはるかに大きい場合、プログラムによっては多くの仮想アドレス空間が割り当てられていますが、まだ使用されていません。どのプログラムがすべての仮想アドレス空間を割り当てているかを特定する方法はありますか?私のシナリオでは8GBのRAMがありますが、12.2はシステムがコミットし、6.4の物理RAMが使用されています。私のボックスはプロセスエクスプローラを見るとI/Oがほとんどない(ディスクにクランキングするものはほとんどない)と、RAMの可用性の問題であることを私にしてくれるCPU使用率はほとんどない。 –

関連する問題