Large-Page サポート
大きなページのサポートにより、サーバー アプリケーションは、64 ビット Windows で特に便利な大きなページ メモリ領域を確立できます。 各大ページ変換では、CPU 内で 1 つの変換バッファーが使用されます。 このバッファーのサイズは、通常、ネイティブ ページ サイズよりも 3 桁大きくなります。これにより、変換バッファーの効率が向上し、頻繁にアクセスされるメモリのパフォーマンスが向上する可能性があります。
次の手順では、大きなページのサポートを使用する方法について説明します。
大きなページのサポートを使用するには
- AdjustTokenPrivileges 関数を呼び出して、SeLockMemoryPrivilege 特権を取得します。 詳細については、「 アカウントへの特権の割り当て 」および 「トークンでの特権の変更」を参照してください。
- GetLargePageMinimum 関数を呼び出して、最小の大きなページ サイズを取得します。
- VirtualAlloc 関数を呼び出すときに、MEM_LARGE_PAGES値を含めます。 サイズと配置は、大きいページの最小値の倍数である必要があります。
大ページ メモリを使用するアプリケーションを作成する場合は、次の考慮事項に注意してください。
- 大きなページのメモリ領域は、各大きなページの物理領域は連続している必要がありますが、メモリが断片化している可能性があるため、システムが長時間実行された後に取得するのが困難な場合があります。 これらの条件下で大きなページを割り当てると、システムのパフォーマンスに大きな影響を与える可能性があります。 そのため、アプリケーションでは、繰り返し大きなページの割り当てを行うことを避け、代わりに起動時にすべての大きなページを 1 回割り当てる必要があります。
- メモリは常に読み取り/書き込み可能であり、ページ不可能です (常に物理メモリに常駐します)。
- メモリはプロセス プライベート バイトの一部ですが、ワーキング セットの一部ではありません。定義によるワーキング セットにはページング可能なメモリのみが含まれているためです。
- 大きなページの割り当ては、ジョブの制限の対象になりません。
- 大きなページ メモリは、1 回の操作として予約してコミットする必要があります。 つまり、大きなページを使用して、以前に予約されたメモリ範囲をコミットすることはできません。
- Intel Itanium ベースのシステムの WOW64 では、この機能を使用する 32 ビット アプリケーションはサポートされていません。 アプリケーションは、ネイティブの 64 ビット アプリケーションとして再コンパイルする必要があります。