4-Gigabyte Tuning

4-Gigabyte Tuningまたは4GT RAM Tuningとは32ビットWindows NT系にて仮想アドレス空間のユーザ空間とカーネル空間の割り振り量を変更するための機能である。略称は4GT。/LARGEADDRESSAWAREや/3GBと称される事があるが前者はVisual C++のリンカ/LARGEADDRESSAWARE (大きいアドレスの処理)とEditbin.exe/LARGEADDRESSAWAREにおける4GT対応アプリケーションを作るためのオプション名、後者はXP/2003までのWindowsで4GTを有効にするためのオプション名/3GBであり機能名を指す場合には正しくない。

 概要 
32ビットWindows NT系では4GBの仮想アドレス空間をユーザーモードとカーネルモードで共有しており、既定では下位2GBをユーザ空間、上位2GBをカーネル空間に割り振っている。4GTを有効にする事でこの割合をユーザ空間を2GBから3GBの間で増やし、カーネル空間を2GBから1GBの間で減らす事により実質的にアプリケーションが使えるメモリを増やす事が出来る。4GTに対応したアプリケーションの開発にはPEヘッダに4GT対応を表明するIMAGE_FILE_LARGE_ADDRESS_AWAREビットが立っているだけでよく、Address Windowing Extensions APIのような大きなソースコードレベルでの変更Address Windowing Extensionsを必要としない。このため行儀のいいコードで書かれたアプリケーションであれば非対応となっていても後から実行ファイルに変更を施し対応表明を行うことが出来る4GT RAM チューニングのアプリケーションでの利用について。

 対応エディション 
4GTは以下のエディションで設定可能である。
Windows NT Server 4.0, Enterprise Edition
Windows 2000 Advanced Server
Windows 2000 Datacenter Server
Windows XP 全エディションProfessionalのみとする資料があるがこれは古いMicrosoftの情報がProfessionalのみと書いているためである。新しい資料ではThe 4 GT RAM Tuning feature is fully functional on Microsoft Windows 2000 Advanced Server, Microsoft Windows 2000 Datacenter Server, and all editions of Windows XP, Windows Server 2003, Windows Vista, and later versions of Windows.とされている。
Windows Server 2003 全エディション
Windows Vista 全エディション
Windows Server 2008 全エディション
Windows 7 全エディション
Windows 8/8.1 全エディション
Windows 10 全エディション

Windows 9x系には設定を行う項目自体が無く、上記以外のNT 4.0 Server、2000 Professional、2000 Server等においては4GTを有効にする設定を行った場合カーネル空間が1GBに減るだけでユーザ空間は何の恩恵も受けることはないExchange のメモリ使用と /3GB スイッチ4 GB RAM チューニング機能と物理アドレス拡張のスイッチの説明。

 デメリット 
カーネル空間が既定の2GBから減ることにより主に以下のペナルティが生じる。

カーネルページプールの減少[MSMQ] Microsoft メッセージ キューのメッセージの送受信時にエラー 0xc00e0027 が表示される
カーネル非ページプールの減少Memory Limits for Windows Releases
システムPTEの減少システム ページ テーブル エントリでの 4GT チューニングの影響Windows Server 2003 および Windows 2000 では大容量メモリのサポートが使用できる
総デスクトップヒープの減少User32.dll または Kernel32.dll の初期化に失敗する

これらの減少によりカーネルリソースを多く利用するアプリケーションでは動作が不安定になるため4GTの利用は非推奨であるうえWeb サーバーのパフォーマンスを調整する (Office SharePoint Server)、利用する際は徹底的にテストを行うよう指示しているEnterprise Edition 4.0に関するFAQWindows の管理 サーバーのパフォーマンスを測定する。とりわけソケットを多く使うWebサーバーでは甚大な被害と呼ぶほどであるMicrosoft.com の x64 バージョンの Windows への移行。XP/2003以降では問題の緩和のため4GT有効時の割り振りをNT 4.0/2000でのユーザー3GB固定ではなく2GBから3GBの間でエンドユーザーが任意に調整できるようになり、XP/2003ではカーネルに戻された分はシステムPTEとして使われるがそれ以外のメモリプールは減ったままである/userva スイッチと /3GB スイッチを使用してユーザー モード領域を 2 ～ 3 GB の間でチューニングする方法BCD Boot Options Reference。これらのペナルティはDynamic Kernel Address Spaceを採用したVista/2008以降のカーネルでは大幅に緩和されてはいるAsk CORE : リソース不足について - 第 3 回ものの、それでも既定よりカーネル空間が減った分のカーネルリソースの利用可能最大値は減少する。

 64ビットWindowsにおける4GT 
64ビットWindowsには4GTのようなユーザー空間とカーネル空間の割合を調整するオプションは用意されていない。仮想アドレス空間が16TB以上あり必要とされておらずHigh Availability and Scalability Collection、設定もなんの効力も持たないWhat is the effect of setting the /3GB switch on my 64-bit Windows machine?。

WOW64上では4GT対応アプリケーションに対しアドレッシング可能な4GBをカーネル側のペナルティ無しWoW64上で4GT非対応のアプリケーションと比較した場合で使用できる。32ビットプロセスでアクセス可能な仮想アドレス空間にカーネル空間が存在せず、4GB全部をユーザーに割り当てられるためである。

 脚注 

 外部リンク 
 4-Gigabyte Tuning
 4GT Technical Reference
 Advances in Memory Management for Windows
 WOW64 環境でのパフォーマンスとメモリ消費量

Category:メモリ管理
Category:Microsoft Windows