ページ アドレス プールとシステム PTE のメモリ領域の設定方法

文書翻訳 文書翻訳
文書番号: 247904 - 対象製品
この記事は、以前は次の ID で公開されていました: JP247904
重要 : この資料には、レジストリの編集方法が記載されています。万一に備えて、編集の前には必ずレジストリをバックアップし、レジストリの復元方法を理解しておいてください。バックアップ、復元、および編集方法の詳細を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
256986 Microsoft Windows レジストリの説明
すべて展開する | すべて折りたたむ

概要

この資料では、Microsoft ターミナル サーバー サービスを実行している Windows 2000 ベースのコンピュータで、ページ アドレス プールおよびシステム ページ テーブル エントリ (PTE) メモリ領域のサイズを調整する方法を説明します。

詳細

警告 : レジストリ エディタの使い方を誤ると、深刻な問題が発生することがあります。最悪の場合、オペレーティング システムの再インストールが必要になることがあります。マイクロソフトは、レジストリ エディタの誤用により発生した問題に関しては、一切責任を負わないものとします。レジストリ エディタは、自己の責任においてご使用ください。

Windows 2000 では、搭載されている RAM (Random Access Memory) の物理容量とは関係なく、最大 2 の 32 乗バイト、つまり 4 GB のメモリ アドレス空間まで直接アドレスが可能です。デフォルトでは、このアドレス空間のうちの 2 GB が各プロセスに割り当てられ、2 GB がカーネルに割り当てられます。各プロセスで使用されるコンピュータ内のアドレス空間は別々の 2 GB の領域ですが、2 GB のカーネル領域の大部分はグローバルで、現在アクティブになっているユーザー モード プロセスとは関係なく、同じ領域が使用されます。

システム データ構造体と情報は、すべてこの 2 GB のカーネル領域に格納されます。このため、コンピュータに格納できるシステム データ構造体の数とカーネル情報の量は、搭載されている RAM の物理容量とは関係なく、この 2 GB のカーネル アドレス空間領域により制限されます。

この 2 GB のアドレス領域の一部は、ページ プール割り当てとカーネル スタック割り当ての 2 種類のデータに使用されます。ページ プール割り当ては、カーネル モードのコンポーネントにより行われるメモリ割り当てです。カーネル スタック割り当ては、スレッドごとにカーネル内に作成されるスタックで、各スレッドがシステム呼び出しを行うために使用されます。ページ プール割り当てはページ プール領域に作成され、カーネル スタック割り当てはシステム ページ テーブル エントリ (PTE) 領域に作成されます。

これらの異なる割り当ては同じ領域を使用しますが、パーティション分割は起動時に決定されます。オペレーティング システムの実行中に、いずれか一方の領域が不足した場合、もう一方の領域を使用することはできず、プログラムで予期しないエラーが発生することがあります。このため、Windows 2000 ベースのコンピュータで予期しないエラーが発生した場合または新しいログインが受け付けられなかった場合に、コンピュータで CPU (Central Processing Unit) などのその他のリソース制限やディスクのボトルネックが発生していない場合は、ディスク空間上でページ プール領域またはシステム PTE 領域が不足している可能性があります。ターミナル サービスを有効にしているコンピュータでは、デフォルトでシステム PTE 領域のサイズが可能な限り大きくなるように構成されるため、通常はページ プール アドレス空間が不足することによりこの制限が生じます。一部のコンピュータでは、システム PTE 領域が小さくなるように構成できます。システム PTE 領域を小さく構成すると、このような現象は緩和され、コンピュータにアクセスできるユーザーが多くなります。

コンピュータで、これらのリソースのうち不足しているものがあるかどうかを調べるには、以下の手順を実行します。
  1. コンピュータにカーネル デバッガをアタッチします。
  2. テキスト エディタを使用して、Boot.ini ファイルに /DEBUG パラメータを追加します。
  3. コンピュータを再起動します。
カーネル デバッガの使用方法の関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
151981 ヌル モデム ケーブルを使用してリモート デバッグ セッションをセットアップする方法
システムが制限に達している場合は、以下の手順を実行します。
  1. デバッガを中断します。
  2. !vm と入力し、Enter キーを押します。
  3. デバッガによりエラーが出力された場合は、!reload と入力して Enter キーを押し、適切なシンボルが読み込まれるようにします。
以下にデバッグ セッションのサンプルを掲載します。わかりやすいように、注目すべきデータを太字にしています。

*** Virtual Memory Usage ***
Physical Memory: 1032075 ( 4128300 Kb)
Page File: \??\C:\pagefile.sys
Current: 4190208Kb
Minimum: 4190208Kb
Maximum: 4190208Kb
Available Pages: 599741 ( 2398964 Kb)
ResAvail Pages: 894259 ( 3577036 Kb)
Modified Pages: 757 ( 3028 Kb)
NonPagedPool Usage: 15084 ( 60336 Kb)
NonPagedPool Max: 71586 ( 286344 Kb)
PagedPool 0 Usage: 22953 ( 91812 Kb)
PagedPool 1 Usage: 4324 ( 17296 Kb)
PagedPool 2 Usage: 4315 ( 17260 Kb)
PagedPool 3 Usage: 4360 ( 17440 Kb)
PagedPool 4 Usage: 4366 ( 17464 Kb)
********** Excessive Paged Pool Usage *****
PagedPool Usage: 40318 ( 161272 Kb)
PagedPool Maximum: 40960 ( 163840 Kb)
Shared Commit: 30133 ( 120532 Kb)
Special Pool: 0 ( 0 Kb)
Free System PTEs: 47920 ( 191680 Kb)
Shared Process: 99141 ( 396564 Kb)
PagedPool Commit: 40318 ( 161272 Kb)
Driver Commit: 770 ( 3080 Kb)
Committed pages: 822746 ( 3290984 Kb)
Commit limit: 2037826 ( 8151304 Kb)
Total Private: 545122 ( 2180488 Kb)
この出力の "********** Excessive Paged Pool Usage *****" エントリは、コンピュータのページ プール リソースが少なくなっていることを示しています。これは、PagedPool Usage エントリの値と PagedPool Maximum エントリの値が非常に近くなっていることで確認できます。

Windows 2000 の新規インストールを行ったコンピュータで、システム PTE 領域とページ プール領域のパーティションを構成するには、コンピュータのページ プール リソースが不足していて、システム PTE 領域の空き容量が十分に残っている必要があります。システム PTE 領域の空き容量は、40,000 KB 以上必要です。コンピュータのシステム PTE 領域の空き容量が不足している場合は、以下の方法を使用して、ターミナル サーバーへのログイン ユーザー数を増やすことはできません。

コンピュータのページ プール領域とシステム PTE 領域の最適なバランスを調整するには、以下の手順を実行します。
  1. コンピュータを再起動し、ログインします。
  2. デバッガを中断し、!vm と入力して、Enter キーを押します。
  3. PagedPool Maximum、PagedPool Usage、および Free System PTEs の値をメモします。メモする値は、単位が Kb のかっこ内の値です。
  4. デバッグ ホスト コンピュータで、g と入力し、Enter キーを押します。
  5. 対象のコンピュータで、ターミナル サーバーのユーザー 10 人がログインし、ログインしたままにしておきます。この手順で必要な 10 人以外のユーザーがコンピュータにアクセスすることのないようにします。
  6. 10 個のセッションすべてで、ユーザーが同時に実行する可能性のあるプログラムをすべて起動します。これは、ユーザーの代表的なサンプルになります。これらのセッションで実行するプログラムは、通常の運用環境のいずれかの時点で、このシステム上のすべてのユーザーが実行するものの代表です。最善の結果を得るには、すべてのリモート ユーザーが、実行しているプログラムに対して通常行う操作を 2、3 種類実行します。たとえば、ワード プロセッサ プログラムで、ユーザーが文字を入力したり、基幹業務用プログラムで 2、3 個の注文を入力したりします。
  7. デバッガを中断し、!vm と入力して、Enter キーを押します。
  8. PagedPool Usage の値、および Free System PTEs の値をメモします。
  9. 次の数式を計算します。

    1. amount of paged pool per user=(amount of paged pool used final-amount of paged pool used initially)/10

      amount of paged pool per user は、1 ユーザーあたりのページ プールの容量、amount of paged pool used final は、最後に使用されていたページ プールの容量、amount of paged pool used initially は、最初に使用されていたページ プールの容量です。
    2. amount of system PTEs per user=(amount of free system PTEs initial-amount of free system PTEs final)/10

      amount of system PTEs per user は、1 ユーザーあたりのシステム PTE の容量、amount of free system PTEs initial は、システム PTE の最初の空き容量、amount of free system PTEs final は、システム PTE の最後の空き容量です。
  10. 以下の手順を実行して、レジストリを変更します。

    1. 次の数式を使用して、1 ユーザーあたりの必要な仮想空間と使用可能な仮想アドレス空間を求めます。

      AvailableVirtualSpace = PagedPoolMaximum + FreeSystemPTEsinitial - PagedPoolUsedinitial

      AvailableVirtualSpace は、使用可能な仮想空間の容量、PagedPoolMaximum は、ページ プールの最大容量、FreeSystemPTEsinitial は、システム PTE の最初の空き容量、PagedPoolUsedinitial は、最初に使用されていたページ プールの容量です。
    2. 次の式を使用して、1 ユーザーあたりの必要な仮想空間を求めます。

      VirtualSpacePerUser = PagedPoolPerUser + SystemPTEsPerUser

      VirtualSpacePerUser は、1 ユーザーあたりの必要な仮想空間の容量、PagedPoolPerUser は、1 ユーザーあたりのページ プールの容量、SystemPTEsPerUser は、1 ユーザーあたりのシステム PTE の容量です。
    3. 次の式を使用して、このコンピュータで理論上サポートされるユーザー数を求めます。

      MaxUsers = AvailableVirtualSpace / VirtualSpacePerUser

      MaxUsers は、ユーザーの最大数、AvailableVirtualSpace は、使用可能な仮想空間の容量、VirtualSpacePerUser は、1 ユーザーあたりの仮想空間の容量です。
    4. 次の式を使用して、必要なシステム PTE 領域を求めます。

      PTErequired = SystemPTEsPerUser x MaxUsers

      PTErequired は、必要な PTE の容量、SystemPTEsPerUser は、1 ユーザーあたりの PTE の容量、MaxUsers は、最大ユーザー数です。
    5. 次の式を使用して、不要な PTE と SystemPages の容量を計算します。

      PTEexcess= FreeSystemPTEsinitial - PTErequired

      PTEexcess は、不要な PTE の容量、FreeSystemPTEsinitial は、システム PTE の最初の空き容量、PTErequired は、必要な PTE の容量です。

      警告 : レジストリ エディタの使い方を誤ると、深刻な問題が発生することがあります。最悪の場合、オペレーティング システムの再インストールが必要になることがあります。マイクロソフトは、レジストリ エディタの誤用により発生した問題に関しては、一切責任を負わないものとします。レジストリ エディタは、自己の責任においてご使用ください。
    6. コマンド プロンプトからレジストリ エディタ (Regedit32.exe) を使用して、HKLM\System\CurrentControlSet\Control\Session Manager\Memory Management\SystemPages の SystemPages の値を、次の式で算出した値に変更します。

      SystemPages = 50,000 - (PTEexcess / 4) (最も近い整数値に丸めます)

      SystemPages は、システム ページの数、PTEexcess は、不要な PTE の容量です。

      算出した SystemPages の値が 7,000 未満の場合は、値を 7,000 に設定します。算出した値が 50,000 を超える場合、アドレス空間の境界は、既に最大数のユーザーをサポートするように設定されています。
    7. コンピュータを再起動し、デバッガを中断し、!vm と入力して、Enter キーを押します。
    8. Paged Pool Maximum が増加し、System PTE 領域が減少していることを確認します。

プロパティ

文書番号: 247904 - 最終更新日: 2006年11月29日 - リビジョン: 3.1
この資料は以下の製品について記述したものです。
  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Datacenter Server
キーワード:?
kbenv kbhowto KB247904
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com