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

概要 編集

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

対応エディション 編集

4GTは以下のエディションで設定可能である。

  • Windows NT Server 4.0, Enterprise Edition
  • Windows 2000 Advanced Server
  • Windows 2000 Datacenter Server
  • Windows XP 全エディション[6]
  • 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に減るだけでユーザ空間は何の恩恵も受けることはない[7][8]

デメリット 編集

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

  • カーネルページプールの減少[9]
  • カーネル非ページプールの減少[10]
  • システムPTEの減少[11][12]
  • 総デスクトップヒープの減少[13]

これらの減少によりカーネルリソースを多く利用するアプリケーションでは動作が不安定になるため4GTの利用は非推奨であるうえ[13][14]、利用する際は徹底的にテストを行うよう指示している[15][16]。とりわけソケットを多く使うWebサーバーでは甚大な被害と呼ぶほどである[17]。XP/2003以降では問題の緩和のため4GT有効時の割り振りをNT 4.0/2000でのユーザー3GB固定ではなく2GBから3GBの間でエンドユーザーが任意に調整できるようになり、XP/2003ではカーネルに戻された分はシステムPTEとして使われるがそれ以外のメモリプールは減ったままである[18][19]。これらのペナルティはDynamic Kernel Address Spaceを採用したVista/2008以降のカーネルでは大幅に緩和されてはいる[20]ものの、それでも既定よりカーネル空間が減った分のカーネルリソースの利用可能最大値は減少する。

64ビットWindowsにおける4GT 編集

64ビットWindowsには4GTのようなユーザー空間とカーネル空間の割合を調整するオプションは用意されていない。仮想アドレス空間が16TB以上あり必要とされておらず[21]、設定もなんの効力も持たない[22]

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

脚注 編集

  1. ^ /LARGEADDRESSAWARE (大きいアドレスの処理)
  2. ^ /LARGEADDRESSAWARE
  3. ^ /3GB
  4. ^ Address Windowing Extensions
  5. ^ 4GT RAM チューニングのアプリケーションでの利用について
  6. ^ 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.とされている。
  7. ^ Exchange のメモリ使用と /3GB スイッチ
  8. ^ 4 GB RAM チューニング機能と物理アドレス拡張のスイッチの説明
  9. ^ [MSMQ] Microsoft メッセージ キューのメッセージの送受信時にエラー 0xc00e0027 が表示される
  10. ^ Memory Limits for Windows Releases
  11. ^ システム ページ テーブル エントリでの 4GT チューニングの影響
  12. ^ Windows Server 2003 および Windows 2000 では大容量メモリのサポートが使用できる
  13. ^ a b User32.dll または Kernel32.dll の初期化に失敗する
  14. ^ Web サーバーのパフォーマンスを調整する (Office SharePoint Server)
  15. ^ Enterprise Edition 4.0に関するFAQ
  16. ^ Windows の管理 サーバーのパフォーマンスを測定する
  17. ^ Microsoft.com の x64 バージョンの Windows への移行
  18. ^ /userva スイッチと /3GB スイッチを使用してユーザー モード領域を 2 ~ 3 GB の間でチューニングする方法
  19. ^ BCD Boot Options Reference
  20. ^ Ask CORE : リソース不足について - 第 3 回
  21. ^ High Availability and Scalability Collection
  22. ^ What is the effect of setting the /3GB switch on my 64-bit Windows machine?
  23. ^ WoW64上で4GT非対応のアプリケーションと比較した場合

外部リンク 編集