現象
X86 ベースのバージョンの Windows Server 2008 Service Pack 2 (SP2) を実行しているコンピューターを使用するいると仮定します。システム ページ テーブル エントリ (Pte) の使用率は高くなります。このような場合は、システムの仮想アドレス空間不足になりかなり断片化しています。
注:-
この問題が発生した場合、システムが不安定になった。
-
ドライバーにはほとんどありませんが発生した特定の割り当てパターンによっては、この問題が発生します。この特定の割り当てのパターンの詳細については、「原因」セクションを参照してください。コンピューターが、不安定な状態のときに、ダンプ ファイルを収集し、分析のため、マイクロソフト カスタマー サービス & サポートに問い合わせてください。
-
システムの仮想アドレスとシステム Pte の断片化に関する情報を入手するには、次の操作のいずれかを実行する必要が。
-
ライブ カーネル モード デバッグ セッションを確立します。
-
ローカルのカーネル モード デバッグ セッションを確立します。
-
カーネル モードのダンプ ファイルを収集します。
次のカーネル デバッガー コマンドを使用して、セッションを確立し、情報を入手できます。
-
合計空き容量、最大のメモリ ブロックを表示するのには、次のコマンドを実行し、プールとシステム Pte) などのさまざまなカーネル メモリ リソースで使用されるメモリの量。
!vm 21 このコマンドによって返されるメッセージは次のようになります。
14: kd> !vm 21*** Virtual Memory Usage ***
Physical Memory: 4191796 ( 16767184 Kb) Page File: \??\C:\pagefile.sys Current: 17408000 Kb Free Space: 17362464 Kb Minimum: 17408000 Kb Maximum: 17408000 Kb Available Pages: 980816 ( 3923264 Kb) ResAvail Pages: 4005065 ( 16020260 Kb) Locked IO Pages: 0 ( 0 Kb) Free System PTEs: 55716 ( 222864 Kb) Modified Pages: 24737 ( 98948 Kb) Modified PF Pages: 24356 ( 97424 Kb) NonPagedPool Usage: 51445 ( 205780 Kb) NonPagedPool Max: 522998 ( 2091992 Kb) PagedPool 0 Usage: 169861 ( 679444 Kb) PagedPool 1 Usage: 24692 ( 98768 Kb) PagedPool 2 Usage: 19764 ( 79056 Kb) PagedPool 3 Usage: 19469 ( 77876 Kb) PagedPool 4 Usage: 20109 ( 80436 Kb) PagedPool Usage: 253895 ( 1015580 Kb) PagedPool Maximum: 523264 ( 2093056 Kb) Session Commit: 12273 ( 49092 Kb) Shared Commit: 37334 ( 149336 Kb) Special Pool: 0 ( 0 Kb) Shared Process: 22380 ( 89520 Kb) Pages For MDLs: 1 ( 4 Kb) PagedPool Commit: 253895 ( 1015580 Kb) Driver Commit: 3829 ( 15316 Kb) Committed pages: 3862488 ( 15449952 Kb) Commit limit: 8507657 ( 34030628 Kb) VA Type CurrentUse Peak Limit Failures Unused 130 Mb 0 Mb OPEN 0 SessionSpace 60 Mb 66 Mb OPEN 0 ProcessSpace 16 Mb 0 Mb OPEN 0 BootLoaded 26 Mb 0 Mb OPEN 0 PfnDatabase 118 Mb 248 Mb OPEN 0 NonPagedPool 208 Mb 210 Mb OPEN 0 PagedPool 1096 Mb 1096 Mb OPEN 0 SpecialPool 0 Mb 0 Mb OPEN 0 SystemCache 140 Mb 992 Mb OPEN 0 SystemPtes 214 Mb 222 Mb OPEN 0 Hal 4 Mb 0 Mb OPEN 0 SessionGlobal 12 Mb 12 Mb OPEN 0 Driver Images 24 Mb 0 Mb OPEN 0 NPSpecialPool 0 Mb 0 Mb OPEN 0 ProtoPTE Pool 0 Mb 0 Mb OPEN 0 Maximum contiguous unused VA: 8 Mb -
システム Pte の情報を表示するのには次のコマンドを実行します。
!sysptes 1 この情報には、数とサイズの空きブロックが含まれています。このコマンドによって返されるメッセージは次のようになります。
14: kd> !sysptes 1System PTE Information
Total System Ptes 88048 starting PTE: c0400000 free ptes: c0402c80 number free: 1. free ptes: c0402ca8 number free: 1. free ptes: c0408020 number free: 3. free ptes: c0408098 number free: 4. . . . 3755 entries cut . . . free ptes: c07ddd30 number free: 13. free ptes: c07dddd8 number free: 4. free ptes: c07dde18 number free: 4. free ptes: c07dde58 number free: 1. free ptes: c07dde80 number free: 26. free ptes: c07ddf70 number free: 10. free blocks: 3763 total free: 22432 largest free block: 89
「現象」に記載されている問題が発生したとき、"CurrentUse"のインジケーターによって返される、 ! vm 21コマンドは、"SystemPtes"カテゴリ時間の経過と共に増加します。「フリー ・ ブロック」値を表示することによって、同時にシステム Pte 断片化を発生する可能性がで返されますが、 ! sysptes 1時間の経過と共にコマンドです。
「未使用」と"最大連続使用されていない VA"によって返される値を見ながら、消費と使用可能なカーネル仮想アドレス空間の断片化を診断できる、 ! vm 21コマンドです。 カーネル モードのダンプ ファイルでは、パラメーターの変化を時間の経過を観察することはできません。 -
原因
この問題は、デバイス ドライバーやカーネル モードのコードが割り当てられ、大規模なメモリ バッファー (I/O バッファー) を解放するために発生します。このようなバッファーを実装するには、システム Pte を使用します。要求されるサイズの大きい領域は、2 メガバイト (MB) の倍数ではない、システム Pte 領域内での断片化が発生します。
解決策
修正プログラムの情報
この修正プログラムをインストールした後は、1 つまたは複数のカーネル ドライバーの特定の割り当てのパターンが発生したときに、断片化を軽減するのには割り当てアルゴリズムが最適化されています。2 MB を超えるシステム PTE のマッピングの要求は、断片化を減らすために 2 MB の倍数に丸められます。
サポートされている修正プログラムは、マイクロソフトから入手可能です。ただし、この修正プログラムは、ここで説明する問題のみを修正することを目的としたものです。この修正プログラムは、この資料に記載された問題があったシステムのみに対して適用してください。この修正プログラムは、今後さらにテストを行う場合があります。したがって、この問題の影響が深刻でない場合は、この修正プログラムが含まれる次のソフトウェア更新プログラムがリリースされるまで待つことをお勧めします。 修正プログラムをダウンロードできる場合は、このサポート技術情報の資料の上部に「修正プログラムのダウンロード」セクションがあります。このセクションが表示されていない場合は、マイクロソフト カスタマー サービス サポートにお問い合わせのうえ、修正プログラムを入手してください。