예제 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
다시 부팅하지 않고 크기별 특수 풀 요청
다음 명령은 x86 컴퓨터에서 1~8바이트의 할당에 대해 특수 풀을 요청하며 0x1000 할당 세분성이 8바이트인 PAGE_SIZE.
이 명령은 /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 및 할당 세분성이 16바이트인 x64 PAGE_SIZE 컴퓨터에서 1024~1040바이트 할당을 위해 특수 풀을 요청합니다.
이 명령은 /r 매개 변수를 사용하여 시스템 전체 레지스트리 설정 및 +spp 약어를 지정하여 특수 풀 요청을 설정합니다. 크기 값 앞에 풀 태그가 아닌 크기임을 나타내기 위해 0x가 옵니다.
0x420 값은 총 1056바이트(0x420)에 대해 할당 세분성(16바이트)을 범위에서 가장 큰 크기(1040바이트)에 추가하여 계산됩니다. 입력할 올바른 값을 결정하는 데 도움이 되는 도움말은 특수 풀에서 "할당 크기 선택"을 참조하세요.
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.