例 14: 特別なプールを構成する
Windows Vista 以降では、特別なプール機能をカーネル フラグ設定またはレジストリ設定として構成できます。 カーネル フラグ (実行時) 設定として構成する場合は、変更を有効にするためにコンピューターを再起動する必要はありません。 それ以前のバージョンの Windows では、特別なプールはレジストリ設定としてのみ使用できます。
また、Windows Vista 以降では、コマンド ラインから特別なプール機能を設定して構成することもできます。 それ以前のバージョンの Windows では、[グローバル フラグ] ダイアログ ボックスでのみ、特別なプール機能を設定して構成できます。
再起動せずにプール タグで特別なプールを要求する
次のコマンドは、Tag1 プール タグを持つすべての割り当てに対して特別なプールを要求します。 この設定はすぐに有効になりますが、Windows をシャットダウンまたは再起動すると失われます。
このコマンドは、/k パラメーターを使用し、カーネル フラグ (実行時) 設定と +spp の省略形を指定して特別なプール要求を設定します。
gflags /k +spp Tag1
Gflags は次の出力で応答します。
Special Pool set to 0x31676154
PoolTagOverruns set to 0x1
Current Running Kernel Settings are: 00000000
特別なプール割り当て要求はカーネル フラグ設定ではなく、カーネル設定の値に反映されないことに注意してください。
また、特別なプール割り当て要求により、特別なプールのオーバーラン (0x1) またはアンダーラン (0x0) 設定の値は変更されません。 既定のオーバーランからアンダーランに変更するには、[Gflags] ダイアログ ボックスを使用します。 詳細については、「オーバーランとアンダーランの検出」を参照してください。
コマンド ラインでプール タグは表示できません。 プール タグがカーネル設定であることを確認するには、[Gflags] ダイアログ ボックスを使用します。
レジストリのプール タグで特別なプールを要求する
次のコマンドは、Tag1 プール タグを持つすべての割り当てに対して特別なプールを要求します。 この設定はレジストリに格納されているため、有効にするにはコンピューターを再起動する必要がありますが、変更するまで有効になったままになります。
このコマンドは、/r パラメーターを使用し、レジストリ設定と +spp の省略形を指定して特別なプール要求を設定します。
gflags /r +spp Tag1
Gflags は次の出力で応答します。
Special Pool set to 0x31676154
PoolTagOverruns set to 0x1
Current Boot Registry Settings are: 00000000
特別なプール割り当て要求はレジストリ フラグ設定ではなく、レジストリ設定の値に反映されないことに注意してください。
また、特別なプール割り当て要求により、特別なプールのオーバーラン (0x1) またはアンダーラン (0x0) 設定の値は変更されません。 既定のオーバーランからアンダーランに変更するには、[Gflags] ダイアログ ボックスを使用します。 詳細については、「オーバーランとアンダーランの検出」を参照してください。
レジストリに値が追加されたことを確認するには、Reg または Regedit を使用して HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management キーの PoolTag エントリの値を表示します。
次に例を示します。
c:>reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" -v PoolTag
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management
PoolTag REG_DWORD 0x31676154
再起動せずにサイズで特別なプールを要求する
次のコマンドは、0x1000 の PAGE_SIZE と 8 バイトの割り当て粒度で x86 コンピューターの 1 ~ 8 バイトの割り当てに対して特別なプールを要求します。
このコマンドは、/k パラメーターを使用し、カーネル フラグ (実行時) 設定と +spp の省略形を指定して特別なプール要求を設定します。 サイズ値の前に 0x を付けて、プール タグではなくサイズであることを示します。
0x10 の値は、合計 16 バイト (0x10) の範囲での最大サイズ (8 バイト) に割り当て粒度 (8 バイト) を追加することによって計算されます。 入力する正しい値を決定するには、特別なプールの「割り当てサイズの選択」を参照してください。
gflags /k +spp 0x10
Gflags は次の出力で応答します。
Special Pool set to 0x10
PoolTagOverruns set to 0x1
Current Running Kernel Settings are: 00000000
また、特別なプール割り当て要求はカーネル フラグ設定ではなく、カーネル設定の値に反映されません。
また、特別なプール割り当て要求により、特別なプールのオーバーラン (0x1) またはアンダーラン (0x0) 設定の値は変更されません。 既定のオーバーランからアンダーランに変更するには、[Gflags] ダイアログ ボックスを使用します。 詳細については、「オーバーランとアンダーランの検出」を参照してください。
レジストリのサイズで特別なプールを要求する
次のコマンドは、0x1000 の PAGE_SIZE と 16 バイトの割り当て粒度で x64 コンピューターの 1024 ~ 1040 バイトの割り当てに対して特別なプールを要求します。
このコマンドは、/r パラメーターを使用し、システム全体のレジストリ設定と +spp の省略形を指定して特別なプール要求を設定します。 サイズ値の前に 0x を付けて、プール タグではなくサイズであることを示します。
0x420 の値は、合計 1056 バイト (0x420) の範囲での最大サイズ (1040 バイト) に割り当て粒度 (16 バイト) を追加することによって計算されます。 入力する正しい値を決定するには、特別なプールの「割り当てサイズの選択」を参照してください。
gflags /r +spp 0x420
Gflags は次の出力で応答します。
Special Pool set to 0x420
PoolTagOverruns set to 0x1
Current Boot Registry Settings are: 00000000
また、特別なプール割り当て要求はレジストリ フラグ設定ではなく、レジストリ設定の値に反映されません。
また、特別なプール割り当て要求により、特別なプールのオーバーラン (0x1) またはアンダーラン (0x0) 設定の値は変更されません。 既定のオーバーランからアンダーランに変更するには、[Gflags] ダイアログ ボックスを使用します。 詳細については、「オーバーランとアンダーランの検出」を参照してください。
レジストリに値が追加されたことを確認するには、Reg または Regedit を使用して HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management キーの PoolTag エントリの値を表示します。
次に例を示します。
c:>reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" -v PoolTag
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management
PoolTag REG_DWORD 0x420
特別なプール要求を取り消す
次のコマンドは、カーネル フラグ (実行時) 設定として特別なプールの要求を取り消します。 このコマンドは、プール タグまたはサイズでの要求の場合でも同じです。
gflags /k -spp
次のコマンドは、特別なプールの要求をレジストリ設定として取り消します。 このコマンドは、プール タグまたはサイズでの要求の場合でも同じです。
gflags /r -spp
コマンドが成功すると、Gflags は次の出力で応答します。
Special Pool value has been deleted.