Paged Pool 메모리는 시스템의 제한된 리소스로 여러 커널 모드 프로그램에서 공유하여 사용하는 커널 리소스입니다. Paged Pool 메모리가 소진될 경우, 시스템의 행 증상이 발생하게 됩니다. Paged Pool 메모리의 소진 현상의 원인 분석 및 재발 방지책을 찾기 위해서는 특정 커널 모드 프로그램이 paged pool 메모리를 과도하게 사용하고 있지 않은지 또는 시스템의 paged pool 메모리 구성이 너무 작게 설정되어 있지 않은지 등을 복합적으로 점검해 볼 필요가 있습니다.
먼저, Paged Pool 메모리 부족 현상이 발생하면 시스템 이벤트 2020 오류가 발생하게 됩니다.
이벤트 ID: 2020
원본: Srv
설명: 풀이 비었으므로, 서버가 시스템의 페이징 풀에서 할당하지 못했습니다.
현재 소모된 paged pool 메모리는 성능 모니터 (Perfmon.exe)에서 메모리/Pool Paged Bytes 카운터를 통하여 확인할 수 있습니다.
Windows 행 메모리 덤프가 수집되었다면 현재 시스템의 paged pool 메모리의 최대값 및 소모량을 좀 더 정확히 확인할 수 있습니다.
kd> !vm 1
*** Virtual Memory Usage ***
Physical Memory: 16270 ( 65080 Kb)
Page File: \??\E:\pagefile.sys
Current: 98304Kb Free Space: 61044Kb
Minimum: 98304Kb Maximum: 196608Kb
Available Pages: 5543 ( 22172 Kb)
ResAvail Pages: 6759 ( 27036 Kb)
Locked IO Pages: 112 ( 448 Kb)
Free System PTEs: 45089 ( 180356 Kb)
Free NP PTEs: 5145 ( 20580 Kb)
Free Special NP: 336 ( 1344 Kb)
Modified Pages: 714 ( 2856 Kb)
NonPagedPool Usage: 877 ( 3508 Kb)
NonPagedPool Max: 6252 ( 25008 Kb)
PagedPool 0 Usage: 729 ( 2916 Kb)
PagedPool 1 Usage: 432 ( 1728 Kb)
PagedPool 2 Usage: 436 ( 1744 Kb)
PagedPool Usage: 1597 ( 6388 Kb)
PagedPool Maximum: 13312 ( 53248 Kb)
Shared Commit: 1097 ( 4388 Kb)
Special Pool: 229 ( 916 Kb)
Shared Process: 1956 ( 7824 Kb)
PagedPool Commit: 1597 ( 6388 Kb)
Driver Commit: 828 ( 3312 Kb)
Committed pages: 21949 ( 87796 Kb)
Commit limit: 36256 ( 145024 Kb)
!poolused 4 명령을 통해서 Paged pool memory를 많이 소모한 순으로 Paged pool tag를 리스트할 수 있습니다.
!poolused 4
Paged pool memory를 많이 소모한pool tag를 확인한 후, 아래 findstr 명령을 통하여 해당 pool tag로부터 어떤 드라이버가 해당 pool tag를 사용하였는지 확인할 수 있습니다.
findstr /m /l tag *.sys
<예>

아래 표는 Windows Server 2003 (32-bit) 시스템의 대략적인 최대 kernel resource table 입니다. 3GB 옵션이 활성화되어 있는 경우, Paged pool 메모리의 최대값은 그렇지 않은 경우에 비해 50% 정도로 줄어듭니다. 3GB 옵션이 반드시 필요한 경우가 아니라면 시스템에서 3GB 옵션은 제거하는 것이 paged pool 메모리 고갈 현상을 막을 수 있습니다.

3GB 옵션을 사용하지 않았더라도 System PTE를 기본값 이상을 늘릴 경우, 상대적으로 paged pool 메모리의 최대치를 줄어들게 되고, paged pool 메모리의 고갈 이슈가 쉽게 발생할 수 있습니다. 시스템에 System PTE가 기본값 이상으로 설정되어 있는지는 아래 레지스트리 키의 SystemPages 값을 통하여 확인할 수 있습니다.
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Memory Management
다른 접근 방법으로는 Free System PTE가 여유가 있는 시스템에서 paged pool 메모리의 고갈 현상이 발생한다면, 아래 KB의 내용을 참조하여 paged pool 메모리의 최대치를 더 늘려주는 방법을 고려해 볼 수 있습니다.
서버가 시스템의 페이지된 풀에서 메모리를 할당할 수 없다
http://support.microsoft.com/?id=312362