Поделиться через


Пример 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, чтобы отобразить значение записи PoolTag в разделеHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management .

Пример:

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

Запрос специального пула по размеру без перезагрузки

Следующая команда запрашивает специальный пул для выделения от 1 до 8 байт на компьютере x86 с PAGE_SIZE 0x1000 и степенью детализации выделения 8 байт.

Эта команда использует параметр /k , чтобы указать параметр флага ядра (время выполнения) и сокращение +spp для задания специального запроса пула. Значение size предшествует 0x, чтобы указать, что это размер, а не тег пула.

Значение, 0x10, вычисляется путем добавления степени детализации выделения (8 байт) к наибольшему размеру в диапазоне (8 байт) в общей сложности 16 байтов (0x10). Сведения о том, как определить правильное значение для ввода, см. в разделе "Выбор размера выделения" статьи Специальный пул.

gflags /k +spp 0x10

Gflags отвечает печатью:

Special Pool set to 0x10
PoolTagOverruns set to 0x1
Current Running Kernel Settings are: 00000000

Опять же, запрос на выделение специального пула не является параметром флага ядра и не отражается в значении параметров ядра.

Кроме того, запрос на выделение специального пула не изменяет значение параметра переполнения (0x1) или недостаточного выполнения (0x0) для специального пула. Чтобы изменить значение по умолчанию с переполнения на недостаточное, используйте диалоговое окно Gflags. Дополнительные сведения см. в разделе Обнаружение переполнения и недостаточного выполнения.

Запрос специального пула по размеру в реестре

Следующая команда запрашивает выделение от 1024 до 1040 байт на компьютере x64 с PAGE_SIZE 0x1000 и степенью детализации выделения 16 байт.

Эта команда использует параметр /r для указания параметра реестра для всей системы и сокращение +spp для задания специального запроса пула. Значение size предшествует 0x, чтобы указать, что это размер, а не тег пула.

Значение, 0x420, вычисляется путем добавления гранулярности выделения (16 байт) к наибольшему размеру в диапазоне (1040 байт) в общей сложности 1056 байтов (0x420). Сведения о том, как определить правильное значение для ввода, см. в разделе "Выбор размера выделения" статьи Специальный пул.

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, чтобы отобразить значение записи PoolTag в разделеHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management .

Пример:

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.