Windows Server 2008, Windows VISTA 32bit 운영체제의 Paged Pool, NonPaged Pool 리소스 사용을 제한하기 위해서 Registry 키 값을 통해 설정할 수 있습니다. 물론 이전 버전에서도 가능했습니다만 약간의 차이가 있습니다.
커널 어드레싱 동적 관리(Dynamic kernel addressing)를 지원함으로써 주소 공간 사이즈를 고정하지 않고 주소 공간에 여유가 있을 때, 동적으로 Paged Pool, NonPaged Pool 사이즈를 확장할 수 있다는 것이 이전 Windows Server 2003 에서 정해진 커널 메모리 영역에 따른 시스템 리소스 부족 현상에 대해서 조금 더 유연하게 대처할 수 있는 기능입니다.
[환경]
Windows Server 2008 SP1
Physical Memory : 2GB (Hyper-V, Guest OS)
[시나리오]
Memory Management 설정을 변경하는 아래 레지스트리 경로에서 PagedPoolLimit, NonPagedPoolLimit 설정 후 시스템을 재시작 합니다.
HKEY_LOCAL_MACHINE\SYSTEM\Current Control Set\Control\Session Manager\Memory Management
1. REG_DWORD - NonPagedPoolLimit : 360 (Decimal)
2. REG_DWORD - PagedPoolLimit : 900 (Decimal)
(단위 : MB)
[확인방법]
1. Process Explorer 를 사용하여 Paged Pool, NonPaged, Pool Limit 을 확인합니다. Limit 을 적용했던 값은 나타나지 않고 각각 2GB, 1.5GB 값이 나타납니다. 실제 사용 가능한 최대 값이 아니라는 것입니다.
2. NotMyFault 툴을 사용하여 NonPaged Pool Leak 을 일부러 일으켜 360MB 부근에 도달하면 Pool allocation failed 가 발생하며 결국 system hang 이 발생하는 것을 확인할 수 있었습니다.
3. Debug Mode 로 부팅하여 Windbg 로 로컬 커널 디버그를 연결하여 현재 문제 발생 시점의 가상 메모리 값을 확인합니다.
Max 값과 Limit 의 차이를 혼동하지 말고 Windows Server 2008 에서는 디버그 모드로 부팅하지 않는 한 커널 디버깅을 할 수 없으니 커널 메모리 이슈 발생 시, Registry 값도 같이 확인해야 할 것 같습니다.
[참고자료]
작성자 : Lai Go / 작성일자 : 2011.04.25
'Windows > 2008' 카테고리의 다른 글
[스크랩] Windows Server 2008 AD 백업 및 복원 (0) | 2014.06.18 |
---|---|
[스크랩] 윈도우2008 L4 DSR Loopback 아답터 설정 (0) | 2014.05.22 |
2008 이상 NTP 동기화 설정 작업 (0) | 2014.02.17 |
2008 R2 서버에서 Windows Time 서비스가 자동 재시작 안 되는 현상 (0) | 2014.02.17 |
클러스터 설치 실패시. (클러스터를 만드는 동안 오류가 발생하였다는 메시지) (0) | 2014.02.17 |