完全メモリ ダンプ採取のための設定手順について

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

今回は完全メモリ ダンプ採取のための設定手順についてスクリーンショットを交えつつ、ご紹介いたします。

注意事項 : Microsoft Customer Support and Services のエンジニアが明示的にお客様に依頼した場合にのみ、この作業を行ってください。
Microsoft Customer Support and Services (CSS) に問い合わせる必要がある場合、エンジニアが問題を特定するための必要な情報を入手するために役立ちます。

以下の手順を完了するには、管理者または Administrators グループのメンバーとしてログオンしている必要があります。
コンピューターがネットワークに接続されている場合は、ネットワーク ポリシーの設定によって、この手順を実行できないことがあります。

 

メモリ ダンプとは


すべてのプログラムはメモリにて展開され、CPU が読み出し、プログラムを実行しています。
従いまして、プログラムがフリーズおよびクラッシュなどする際は、 メモリ領域の情報を記録するメモリダンプを生成し、原因の調査に使用します。

 

なぜ完全メモリ ダンプなのか


メモリ ダンプには以下の 3 つの種類があります。
カーネル メモリ ダンプ、最小メモリ ダンプ (256 KB)、完全メモリ ダンプです。
カーネル メモリ ダンプに関しては、カーネル メモリのみを記録し、ユーザー モードの情報はないため、トラブルの原因を特定できない場合があります。
最小メモリ ダンプ (256 KB) に関しては、停止した原因を判別するのに役立つ有用な情報の最小セットを記録するため、原因追及に至る可能性は低いです。

一方、完全メモリ ダンプはシステム メモリのすべての内容を記録するため、詳細調査に非常に有効です。
従いまして、調査の為にメモリ ダンプを取得する場合には、完全メモリ ダンプを取得いただく事を推奨しています。

 

完全メモリ ダンプ採取のための設定


ページ ファイルの大きさの設定と完全メモリ ダンプが生成される設定を行い、メモリ ダンプが正しく出力されるように設定します。

※ これからご案内する手順は、Windows 7 を対象としております。
Windows Server 2016, 2012R2, 2012, 2008, 2008R2 や Windows 10, 8, 8.1に関しての設定手順のご案内は順次公開いたします。

=======================
1. ページ ファイルの大きさを設定する
=======================

1. [スタート] - [コンピュータ] を右クリックし、[プロパティ] をクリックします。

blog01

2. “システム” 内の左側の列にある [システムの詳細設定] をクリックします。

blog02

3. “システムのプロパティ” の [詳細設定] タブの [パフォーマンス] 枠内にある [設定] ボタンをクリックします。

blog07

4. “パフォーマンス オプション” の [詳細設定] タブの [仮想メモリ] 枠内にある[変更] ボタンをクリックします。

blog04

5. “仮想メモリ” の [カスタム サイズ] をチェックし、[初期サイズ] と [最大サイズ]を物理メモリ + 1MB 以上の数値で入力し、[設定] ボタンをクリックします。
[OK] ボタンを 2 回クリックします。
※ 以下の画像では物理メモリが 1000 MBなので 1001MB としています。 blog05

6. 再起動を促されるので、[後で再起動する] を選択します。

blog06

=======================
2. 完全メモリ ダンプが生成される設定にする
=======================

1. 再起動後、[スタート] - [コンピュータ] を右クリックし、[プロパティ] をクリックします。

blog01

2. “システム” 内の左側の列にある [システムの詳細設定] をクリックします。

blog02

3. “システムのプロパティ” の [詳細設定] タブの [起動と回復] 枠内にある [設定] ボタンをクリックします。

blog03

4. “起動と回復” の [デバッグ情報の書き込み] 枠内にある [完全メモリ ダンプ] を選択します。
[OK] ボタンを 2 回クリックします。

blog08

5. システムを再起動します。
上記の設定は、再起動後に反映します。

 

注意事項: 2GB 以上の物理メモリ (RAM) を搭載している環境では、上述の GUI から [完全メモリ ダンプ] を選択することができません。
従いまして、[スタート] - [プログラムとファイルの検索] に "regedit" と入力し、レジストリ エディターを起動します。 regeditcapture
レジストリ エディターで、次のレジストリの値を設定してください。 regeditcapture02

場所:HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\CrashControl
名前:CrashDumpEnabled
種類:REG_DWORD
値:1

メモリ ダンプの出力先は、次のレジストリ値で確認できます。 regeditcapture03

場所:HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\CrashControl
名前:DumpFile
種類:REG_EXPAND_SZ
既定値:%SystemRoot%\MEMORY.DMP

上記のレジストリの設定を変更した後は、設定値を反映する為にシステムの再起動が必要となります。

これらの設定を行った後、次回以降ブルー スクリーン エラーやクラッシュが発生するとメモリ ダンプが保存されるようになります。

 

補足情報


=======================
完全メモリ ダンプの設定によるシステム負荷や運用への影響
=======================
完全メモリ ダンプの設定によるシステム負荷や運用への影響についてはほとんどありませんが、 完全メモリ ダンプの設定を行っている最中のシステムの再起動は避けられません。
そのため、どうしてもシステムの再起動が不可能である環境である場合、メンテナンス時などに完全メモリ ダンプの設定を実施していただく必要があります。

=======================
クライアント OS にてダンプが採取できない問題について
=======================
クライアント OS でのダンプの採取に関しては、 以下の設定を実施していない場合に空き領域確保のため、ダンプを削除される場合があります。
削除される条件は、ドメインに参加しておらず、ボリュームの空き領域が 25GB 未満である場合です。
以下の設定を実施することで、空き領域確保のためにダンプを削除する動作が抑制されます。

1. [スタート] - [プログラムとファイルの検索] に "regedit" と入力し、レジストリ エディターを起動します。

captureblog0000

2. 以下の場所に新しく"AlwaysKeepMemoryDump" を作成し、値を 1 に設定します。

場所: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\CrashControl
名前: AlwaysKeepMemoryDump
種類: REG_DWORD

captureblog0001

3. システムを再起動します。
上記の設定は、再起動後に反映します。

-------------------------------------
参考情報
メモリ ダンプ ファイルを生成する方法について
https://blogs.technet.microsoft.com/askcorejp/2014/08/10/339/
Windows Server 2008 および Windows Server 2008 R2 でカーネルまたは完全メモリ ダンプ ファイルを生成する方法
https://support.microsoft.com/ja-jp/kb/969028
Kernel dump storage and clean up behavior in Windows 7
https://blogs.msdn.microsoft.com/wer/2009/02/09/kernel-dump-storage-and-clean-up-behavior-in-windows-7/
-------------------------------------

注意事項:お客様の状況や環境により、本ブログとは異なる内容をご案内する場合があります。

 

本ブログが少しでもお役に立てれば幸いです。