Windows 8 と Windows Server 2012 の自動メモリ ダンプについて

こんにちは。Windows プラット フォーム サポートの高山です。

今回は、Windows 8 / Windows Server 2012 の新機能のひとつ、自動メモリ ダンプについてご紹介いたします。

 

   

自動メモリ ダンプは、ページング ファイルのサイズを自動で割り当てる機能と連動します。普段はページング ファイルを小さめに設定し、STOP エラーなどの障害発生時にページング ファイルを物理メモリとほぼ同等のサイズに割り当てなおすことで、次回にSTOP エラーが再発した場合に、正常なダンプ ファイルが出力されるようにするという機能です。出力されるダンプ ファイルの種類はカーネル メモリ ダンプです。

 

自動メモリ ダンプの機能を発揮するためには、仮想メモリを [すべてのドライブのページング ファイルのサイズを自動的に管理する] や  [システム管理サイズ] に設定している必要があります。つまり、[カスタム サイズ] で任意のサイズに設定している場合は、”自動メモリ ダンプ” に設定していても、従来の ”カーネル メモリ ダンプ” に設定している場合と、あまり差異はないということになります。

 

 

 

従来の OS では、仮想メモリの設定を  [システム管理サイズ] に設定している場合、搭載している物理メモリと同程度のページング ファイルを作るようにしていましたが、物理メモリの大容量化、SSD の普及により、ページング ファイルの省サイズ化もニーズとして求められています。そこで Windows 8 / Windows Server 2012 では、物理メモリよりもページング ファイルのサイズを小さくするように動作が変更されています。

 

しかし、STOP エラーなどの障害発生時に正常なメモリ ダンプを出力するためには、STOP エラー発生時のメモリの使用状況にもよりますが、ページング ファイルのサイズが小さいと、ダンプ ファイルは完全な形では出力されない場合があります。自動メモリ ダンプは、STOP エラーなどによる障害が発生した際、自動的にページング ファイルのサイズを調整し、物理メモリと同程度まで拡張させることで、次回 STOP エラーが発生すると正常なカーネル メモリ ダンプ ファイルが出力されるように備えます。

 

4GB (4096MB) の物理メモリを搭載している環境で、ちょっとした検証をしてみましょう。

自動メモリ ダンプを有効にし、仮想メモリはシステム管理サイズに設定します。

 

1) [現在の割り当て] を確認するとページング ファイルのサイズは 704 MB となっています。

 

 

2) STOP エラーを発生させます。

 

 

3) STOP エラー発生後のページング ファイルを確認すると、4096 MB に拡張されました。

 

  

STOP エラーによって再起動された場合、レジストリ キーに “LastCrashTime” という項目を追加し、障害発生時のタイム スタンプを記録します。LastCrashTime が記録されたタイム スタンプから 4 週間、STOP エラーが発生しなければ、ページ ファイルのサイズは自動的に元の拡張前のサイズに縮小させます。

 

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl

  名前: LastCrashTime

  種類: REG_DWORD

 

なお、直ちに、ページ ファイルのサイズを拡張前のサイズに戻す必要がある場合は、レジストリから “LastCrashTime” を手動で削除し、システムの再起動を行うと拡張前のサイズに戻すことも可能です。

 

現在使っているシステムでは、どの種類のメモリ ダンプを選べば良いのかという疑問も出てくるかと思いますが、その点については仮想メモリのサイズをどうしたいのか、という部分と密接に関係しているので、また別の機会に改めてご紹介したいと思います。