現在オフラインです。再接続するためにインターネットの接続を待っています

4GT RAM チューニングのアプリケーションでの利用について

この記事は、以前は次の ID で公開されていました: JP171793
概要
この資料では、Windows NT Server Enterprise Edition (以下 Windows NT Server/E) 4.0 の 4GT RAM チューニング機能について説明します。標準的な Windows NT Server では、各プロセスのランダム アクセス メモリ (RAM) のアドレス制限は 2 GB です。Windows NT Server/E の 4GT 機能を利用することにより、新しい API を導入しなくても、この制限を 3 GB まで増やすことができます。4GT では、Windows NT カーネルに割り当てられる潜在的な RAM を 2 GB から 1 GB に減らすことで、これを実現します。

この資料の内容の多くは、製品のリリース ノートからの抜粋です。
詳細
Windows NT Server プラットフォーム用に開発されるアプリケーションでは、必要なサイズが大きくなり続けているだけでなく、より高いパフォーマンスを要求するようになってきています。データベース管理システム (DBMS) のように大量の入出力処理を必要とするアプリケーションでは、より大きなプロセス空間を使用できれば、時間を要するメディアへの入出力アクセスが減少するため、パフォーマンスを大幅に向上させることができます。現在の Windows NT Server 製品では、1 プロセスあたりのアドレス制限は 2 GB です。4GT を利用すれば、新しい API を導入することなく、この制限を 3 GB まで増やすことができます。4GT では、Windows NT カーネルに割り当てられる潜在的な RAM を 2 GB から 1 GB に減らすことで、これを実現します。

この機能は、アプリケーションを実行するコンピュータに 2 GB 以上の物理 RAM が搭載され、より大きなプロセス空間を利用できる場合に効果を発揮します。以下に、この機能が開発者とアプリケーションに与える効果についてまとめます。

Windows NT Server/E は、Intel アーキテクチャ サーバー上でのみ 4GT をサポートします。

: 4GT は 32 ビット プロセッサ上でのみ機能します。したがって、4GT によって、Windows NT Server で扱えるメモリが現在の制限の 4 GB を超えることはありません。

4GT 対応のアプリケーションを作成する

ユーザー モード アドレスの選択

4GT を有効にすると、仮想アドレスの最上位ビットをユーザー モード アドレスとカーネル モード アドレスの区別に使用できなくなります。

メモリの割り当てに関する問題

ダイナミック リンク ライブラリ (DLL) ファイルの一部は 2 GB の境界付近に読み込まれます。このため、2 GB 空間の中に、隣接するメモリを VirtualAlloc によって割り当てることができない領域があります。

カーネル モードへの影響

カーネル モード コードが、ユーザー モードとカーネル モードの境界を 0x80000000 などの番地であると仮定できなくなります。ProbeForRead マクロまたは ProbeForWrite マクロを使用しているコードは、カーネル空間が 0x80000000 で始まるという仮定に依存しない新しいヘッダーを使用して再ビルドする必要があります。

アプリケーションで 4GT サポートを有効にする

4GT をサポートするための変更は、システム レベルとアプリケーション レベルの両方で行います。

システムでの変更

Windows NT Server/E をインストールした後、4GT を有効にするように Boot.ini ファイルを変更する必要があります。4GT を有効にするには、単に startup 行に /3GB パラメータを追加します。

: この変更は、Windows NT Server/E を使用している場合にのみ有効です。標準の Windows NT 上では、このフラグによってカーネルの移動は行われますが、アプリケーションが 2 GB を超えるメモリにアクセスすることはできません。

以下に例を示します。
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(2)\WINNT
[operating systems] multi(0)disk(0)rdisk(0)partition(2)\WINNT="Windows NT Server Version 4.00" /3GB
multi(0)disk(0)rdisk(0)partition(2)\WINNT="Windows NT Server Version 4.00 [VGA mode]" /basevideo /sos
: 上記の行の一部は、読みやすいように折り返してあります。

アプリケーションでの変更

4GT をサポートするために新しい API は必要ありません。メモリ割り当ても、以下の「効果的な 4GT サポートのためのヒント」で説明する例外を除いて、同様に行うことができます。ただし、どのアプリケーションにも自動的に 3 GB のアドレス空間が用意されるのは効率的ではありません。4GT を選択的に使用できるようにするために、次のメカニズムが実装されています。
  • 3 GB のアドレス空間を利用する必要のある実行ファイルは、イメージ ヘッダーにビット IMAGE_FILE_LARGE_ADDRESS_AWARE を設定する必要があります。これは、Windows NT Server/E の CD の Support フォルダ内にある Imagecfg ツールを使用して実行できます。たとえば、DBMSApp.exe を変更するには、コマンド プロンプトで次のコマンドを入力します。
    Imagecfg -l DBMSApp.exe
: また、実行可能ファイルと IMAGE_FILE_LARGE_ADDRESS_AWARE ビットをリンクするための新しいスイッチ (/ LARGEADDRESSAWARE) がリンカに追加されています。4GT をサポートしていないシステム上で、このビットを設定したアプリケーションを実行しても、アプリケーションへの影響はありません。

効果的な 4GT サポートのためのヒント

以下のガイドラインは、開発者がアプリケーションで 4GT をサポートするかどうかを考慮する際に検討の必要な、コードの変更をまとめたものです。
  • ユーザー仮想空間の合計の取得に GlobalMemoryStatus を使用します。"#define HIGHEST_USER_ADDRESS 0xC0000000" のように、定数として固定的に定義することは避け、実行時に実際の値を取得するようにします。

  • ポインタとの符号付きの比較は行わないようにします。このことが原因で、4GT を有効にしたシステム上でアプリケーションがクラッシュする場合があります。ポインタが 2 GB を超えている場合、"if (pointer > 40000000)" などの条件判断は偽になります。

  • 最上位ビットを使用して値の種類 (アドレス値とデータ値など) を見分けるコードは失敗します。たとえば、32 ビット ワードは、0x80000000 より下の場合はユーザー モード アドレスとして、0x80000000 より上の場合はエラー コードとして見なされる場合がありますが、このような手法は使用できなくなります。

ページング ファイルのサイズを設定する

3 GB を超える物理メモリを搭載したシステムで 4GT オプションを使用する場合は、ページング ファイルのデフォルトのサイズを変更することを検討してください。この変更は、コントロール パネルのシステム ツールを使用して行うことができます。Windows NT 3.51 の場合、ページング ファイルのデフォルトのサイズは、一般には物理メモリの容量に 11 MB を加えた値で、Windows NT 4.0 の場合はシステムの物理メモリの容量と同じサイズです。たとえば、4 GB の物理メモリを搭載したコンピュータでは、ページング ファイルのサイズが 4.01 GB になります。このような場合、合計サイズ 4 GB に基づいたページング ファイルのサイズは効率的であるとはいえず、ページング ファイルのサイズを 256 MB にした方がディスク領域をより効率的に使用できる場合があります。ただし、ページング ファイルのサイズを小さくすると、アプリケーションのメモリ コミット サイズの合計に影響します。これらの設定については、4GT オプションを使用して実行するアプリケーションの製造元に確認する必要があります。
関連情報
この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 171793 (最終更新日 2001-08-10) を基に作成したものです。
プロパティ

文書番号:171793 - 最終更新日: 07/21/2004 06:49:00 - リビジョン: 1.0

  • Microsoft Windows NT Server 4.0 Enterprise Edition
  • kbhowto kbinfo KB171793
フィードバック