Windows での RAM、仮想メモリ、ページファイル、メモリ管理

適用対象: Windows 7、Windows Server 1、Windows Server 2012 R2
元の KB 番号: 2160852

概要

この記事では、32 ビット バージョンの Windows での仮想メモリの実装に関する基本的な情報について説明します。

Windows などの最新のオペレーティング システムでは、アプリケーションと多くのシステム プロセスは、仮想メモリ アドレスを使用して常にメモリを参照します。 仮想メモリ アドレスは、ハードウェアによって実際の (RAM) アドレスに自動的に変換されます。 オペレーティング システム カーネルのコア 部分のみが、このアドレス変換をバイパスし、実際のメモリ アドレスを直接使用します。

実行中のすべてのプロセスで必要なメモリが、システムにインストールされている RAM のボリュームを超えていない場合でも、仮想メモリは常に使用されます。

プロセスとアドレス空間

32 ビット バージョンの Windows で実行されているすべてのプロセス (アプリケーション実行可能ファイルなど) には、コンピューターにインストールされている RAM の量に関係なく、0 から 4,294,967,295 (2*32-1 = 4 GB) までの仮想メモリ アドレス ( 仮想アドレス空間) が割り当てられます。

既定の Windows 構成では、この仮想アドレス空間の 2 ギガバイト (GB) が各プロセスのプライベート使用用に指定され、残りの 2 GB はすべてのプロセスとオペレーティング システム間で共有されます。 通常、アプリケーション (メモ帳、Word、Excel、Acrobat Reader など) では、2 GB のプライベート アドレス空間の一部のみが使用されます。 オペレーティング システムは、使用されている仮想メモリ ページにのみ RAM ページ フレームを割り当てます。

物理アドレス拡張 (PAE) は、物理メモリ (RAM) アドレスを 36 ビットに拡張する Intel 32 ビット アーキテクチャの機能です。 PAE では、仮想アドレス空間のサイズ (4 GB のまま) は変更されませんが、プロセッサによってアドレス指定できる実際の RAM のボリュームだけが変更されます。

プロセスで実行されているコードで使用される 32 ビット仮想メモリ アドレスと 36 ビット RAM アドレスの間の変換は、オペレーティング システムによって管理される 変換テーブル に従って、コンピューター ハードウェアによって自動的かつ透過的に処理されます。 任意の仮想メモリ ページ (32 ビット アドレス) は、任意の物理 RAM ページ (36 ビット アドレス) に関連付けることができます。

次の一覧では、さまざまな Windows バージョンとエディションでサポートされている RAM の量 (2010 年 5 月時点) について説明します。

Windows バージョン RAM
Windows NT 4.0 4 GB
Windows 2000 Professional 4 GB
Windows 2000 Standard Server 4 GB
Windows 2000 Advanced Server 8 GB
Windows 2000 Datacenter Server 32 GB
Windows XP Professional 4 GB
Windows Server 2003 Web Edition 2 GB
Windows Server 2003 Standard Edition 4 GB
Windows Server 2003 Enterprise Edition 32 GB
Windows Server 2003 Datacenter Edition 64 GB
Windows Vista 4 GB
Windows Server 2008 Standard 4 GB
Windows Server 2008 Enterprise 64 GB
Windows Server 2008 Datacenter 64 GB
Windows 7 4 GB

ページファイル

RAM は限られたリソースですが、ほとんどの実用的な目的では、仮想メモリは無制限です。 プロセスは多数あり、各プロセスには 2 GB のプライベート仮想アドレス空間があります。 既存のすべてのプロセスで使用されているメモリが使用可能な RAM を超えると、オペレーティング システムは、1 つ以上の仮想アドレス空間のページ (4 KB 部分) をコンピューターのハード ディスクに移動します。 これにより、その RAM フレームは他の用途で解放されます。 Windows システムでは、これらの ページアウト ページは、パーティションのルートにある 1 つ以上のファイル (Pagefile.sys ファイル) に格納されます。 各ディスク パーティションには、このようなファイルが 1 つ存在する可能性があります。 ページ ファイルの場所とサイズは、[ システムのプロパティ ] で構成されます ([ 詳細設定]、[ パフォーマンス] の順にクリックし、[ 設定 ] ボタンをクリックします)。

ユーザーは、 ページファイルを作成する必要がありますか? この質問に対する回答は、インストールされている RAM の量と、ワークロードに必要な仮想メモリの量によって異なるため、1 つの回答はありません。 他に利用可能な情報がない場合は、インストールされている RAM の 1.5 倍の一般的な推奨事項が適切な出発点です。 サーバー システムでは、通常、十分な RAM を使用して不足が発生しないようにし、ページ ファイルを使用しないようにします。 これらのシステムでは、大きなページファイルを維持するのに役立たない可能性があります。 一方、ディスク領域が豊富な場合は、大きなページファイル (たとえば、インストールされている RAM の 1.5 倍) を維持しても問題は発生せず、サイズを気にする必要もなくなります。

パフォーマンス、アーキテクチャの制限、RAM

どのコンピューター システムでも、負荷が増加すると (ユーザー数、作業量)、パフォーマンスは低下しますが、非線形な方法で実行されます。 特定の時点を超えて負荷や需要が増加すると、パフォーマンスが大幅に低下します。 これは、一部のリソースが非常に不足しており、ボトルネックとなっていることを意味します。

ある時点で、不足しているリソースを増やすことはできません。 これは、アーキテクチャの 制限 に達したことを意味します。 Windows で頻繁に報告されるアーキテクチャの制限には、次のようなものがあります。

  • システム用の 2 GB の共有仮想アドレス空間 (カーネル)
  • プロセスあたり 2 GB のプライベート仮想アドレス空間 (ユーザー モード)
  • 660 MB のシステム PTE ストレージ (Windows Server 2003 以前)
  • 470 MB のページ プール ストレージ (Windows Server 2003 以前)
  • 256 MB の非ページ プール ストレージ (Windows Server 2003 以前)

これは特に Windows Server 2003 に適用されますが、これは Windows XP と Windows 2000 にも適用される場合があります。 ただし、Windows Vista、Windows Server 2008、および Windows 7 では、これらのアーキテクチャの制限がすべて共有されているわけではありません。 ユーザー メモリとカーネル メモリの制限 (ここでの数値 1 と 2) は同じですが、PTEs やさまざまなメモリ プールなどのカーネル リソースは動的です。 この新機能により、ページングメモリと非ページメモリの両方が有効になります。 これにより、前に説明した制限を超えて、カーネル全体が使い果たされるまで、PTE とセッション プールも拡張できます。

次のような頻繁に見つかり、引用符で囲まれたステートメント:

ターミナル サーバーでは、4 GB の RAM が使用される前に、2 GB の共有アドレス空間が完全に使用されます。

これは、場合によっては当てはまる場合があります。 ただし、システムが特定のシステムに適用されるかどうかを確認するには、システムを監視する必要があります。 場合によっては、これらのステートメントは特定のWindows NT 4.0 または Windows 2000 環境からの結論であり、必ずしも Windows Server 2003 には適用されません。 これらのアーキテクチャ制限が実際に実際に到達する可能性を減らすために、Windows Server 2003 に大幅な変更が加えられました。 たとえば、カーネルに含まれる一部のプロセスは、共有仮想アドレス空間で使用されるメモリを削減するために、カーネル以外のプロセスに移動されました。

RAM と仮想メモリの使用状況の監視

パフォーマンス モニターは、システムのパフォーマンスを監視し、ボトルネックの場所を特定するための原則ツールです。 パフォーマンス モニターを開始するには、[スタート] をクリックし、[コントロール パネル]、[管理ツール] の順にクリックし、[パフォーマンス モニター] をダブルクリックします。 いくつかの重要なカウンターと、それらがあなたに伝えるものの概要を次に示します。

  • メモリ、コミット済みバイト: このカウンターは、仮想メモリの需要の測定値です。

    これは、プロセスによって割り当てられたバイト数と、オペレーティング システムがページ ファイル内の RAM ページ フレームまたはページ スロット (またはおそらく両方) をコミットしたバイト数を示します。 Committed Bytes が使用可能な RAM より大きくなると、ページングが増加し、使用されているページファイルのサイズも大きくなります。 ある時点で、ページング アクティビティはパフォーマンスに大きな影響を与え始めます。

  • プロセス、ワーキング セット、_Total: このカウンターは、アクティブな使用中の仮想メモリの測定値 です

    このカウンターは、すべてのプロセスで使用されている仮想メモリが RAM 内になるように必要な RAM の量を示します。 この値は常に 4,096 の倍数であり、これは Windows で使用されるページ サイズです。 使用可能な RAM を超えて仮想メモリの需要が増加すると、オペレーティング システムは、使用可能な RAM 使用率を最適化し、ページングを最小限に抑えるために、プロセスの仮想メモリの量をワーキング セット内で調整します。

  • ページング ファイル、使用中の %pagefile: このカウンターは、実際に使用されているページ ファイルの量の測定値です。

    このカウンターを使用して、ページ ファイルが適切なサイズであるかどうかを判断します。 このカウンターが 100 に達すると、ページ ファイルがいっぱいになり、処理が停止します。 ワークロードの変動に応じて、ページファイルが 50 ~ 075% 以下になるように十分な大きさが必要な場合があります。 ページファイルの多くを使用している場合、異なる物理ディスクに複数のページファイルを配置すると、パフォーマンスが向上する可能性があります。

  • メモリ、ページ/秒: このカウンターは、最も誤解された対策の 1 つです。

    このカウンターの値が大きいと、パフォーマンスのボトルネックが RAM の不足に起因するとは限りません。 オペレーティング システムは、メモリの過剰コミットメントのためにページのスワップ以外の目的でページング システムを使用します。

  • メモリ、ページ出力/秒: このカウンターは、1 秒ごとに RAM ページ フレームを解放するためにページ ファイルに書き込まれた仮想メモリ ページの数を示します。

    これは、ページングがパフォーマンスのボトルネックであると思われる場合に監視するのに最適なカウンターです。 [コミット済みバイト数] がインストールされている RAM より大きい場合でも、ページの出力/秒が最も少ない場合や、ほとんどの場合は 0 である場合、RAM の不足によるパフォーマンスに大きな問題はありません。

  • メモリ、キャッシュ バイト、メモリ、プール非ページ バイト、メモリ、プール ページ バイト、メモリ、システム コードの合計バイト数、メモリ、システム ドライバーの合計バイト数:

    これらのカウンターの合計は、4 GB 仮想アドレス空間の共有部分の 2 GB のうち実際に使用されている量の測定値です。 これらを使用して、前に説明したアーキテクチャの制限のいずれかにシステムが達しているかどうかを判断します。

  • メモリ、使用可能な MBytes: このカウンターは、仮想メモリ (新しい割り当て、またはページ ファイルからページを復元する) の要求を満たすために使用可能な RAM の量を測定します。

    RAM が不足している場合 (たとえば、コミット済みバイト数がインストールされている RAM よりも大きい場合)、オペレーティング システムは、アクティブに使用されていない仮想メモリ ページをページ ファイルにコピーすることで、インストールされている RAM の一部をすぐに使用できるように維持しようとします。 したがって、このカウンターは 0 に達せず、システムが RAM 不足かどうかを示す適切な兆候であるとは限りません。

関連情報

アドレス ウィンドウ拡張機能