류짱:Beyond MySelf

System PTEs 부족 현상 본문

Microsoft/Windows Platform

System PTEs 부족 현상

リュちゃん 2010. 11. 24. 16:09

Process Explorer를 실행하였는데 Insufficient system resources to get handle information  오류 메시지가 발생하고 프로그램이 실행 되지 않아 서버의 리소스를 확인 해 보니........

[환 경]
Windows server 2003 EE x86 + sp
/3G, PAE 옵션 사용

 

[증 상]

프로세스 익스플로러를 실행 시 Insufficient system resources to get handle information 오류 메시지 발생과 함께 해당 프로그램이 실행 되지 않음

 

[원인 분석]

Process exploerer 실행 시 이미 시스템 리소스가 부족 하다는 메시지가 발생 하였으므로 리소스 부족에 의해서 프로그램이 실행 되지 않은 것을 알 수 있기는 합니다만.....
실제 어떤 리소스가 부족한 건지 확인을 위해 Windows debugging tool을 이용해서 시스템 리소스를 다시 한번 확인 해 보았습니다.

Free System PTEs가 3537 이고 , PAE와 /3gb 옵션을 사용하고 있어서 nonpaged pool과 paged pool의 size가 크지 않음을 확인 하였습니다. 
(참고: Windows server 커널 메모리 값=>http://ryuchan.kr/16)

 lkd> !vm 1

*** Virtual Memory Usage ***

             Physical Memory:     3079872 (  12319488 Kb)

             Page File: \??\C:\pagefile.sys

               Current:   2095104 Kb  Free Space:   1747112 Kb

               Minimum:   2095104 Kb  Maximum:      4190208 Kb

             Available Pages:     1967903 (   7871612 Kb)

             ResAvail Pages:      2992397 (  11969588 Kb)

             Locked IO Pages:         304 (      1216 Kb)

             Free System PTEs:       3537 (     14148 Kb)

             ******* 821 system PTE allocations have failed ******

             ******* 4804 system cache map requests have failed ******

             Free NP PTEs:              0 (         0 Kb)

             Free Special NP:           0 (         0 Kb)

             Modified Pages:          621 (      2484 Kb)

             Modified PF Pages:       619 (      2476 Kb)

             NonPagedPool Usage:     9614 (     38456 Kb)

             NonPagedPool Max:      32511 (    130044 Kb)

             PagedPool 0 Usage:     15945 (     63780 Kb)

             PagedPool 1 Usage:      1362 (      5448 Kb)

             PagedPool 2 Usage:      1376 (      5504 Kb)

             PagedPool 3 Usage:      1380 (      5520 Kb)

             PagedPool 4 Usage:      1359 (      5436 Kb)

             PagedPool Usage:       21422 (     85688 Kb)

             PagedPool Maximum:     39424 (    157696 Kb) 

             ********** 7963 pool allocations have failed ********** 

             Session Commit:        15458 (     61832 Kb)

             Shared Commit:         13169 (     52676 Kb)

             Special Pool:              0 (         0 Kb)

             Shared Process:        16740 (     66960 Kb)

             PagedPool Commit:      21446 (     85784 Kb)

             Driver Commit:         20821 (     83284 Kb)

             Committed pages:     1189076 (   4756304 Kb)

             Commit limit:        3546155 (  14184620 Kb)

또한 성능 모니터링 툴 실행 후 Free System Page Table Entries 값 확인 결과 3,xxx 이었습니다.



Sytem PTEs가 5000보다 작을 경우에는 많은 성능 이슈가 발생 할 수 있습니다. 자세한 내용은 아래 참고 사이트에서 확인 하시기 바랍니다.
현재 발생하는 문제를 해결 할 수 있는 방법은 당연시 시스템 재 시작입니다. 시스템 재 시작 전 아래의 조치 사항을 확인 하시고 서버 설정을 변경 하시기 바랍니다
.

[조치 사항]
system PTEs 값을 안정적으로 확보 하기 위해서는 /3G 옵션을 사용하지 않는 것이 좋습니다. 만약 꼭 사용 해야만 한다면........
Userva 옵션을 이용해서 커널 리소스를 조금 더 확보 할 수 있습니다.

만약 /3gb를 무조건 사용해야 한다면  /userva 옵션 사용하여 값을 변경 할 것을 권장합니다.
http://support.microsoft.com/kb/316739/ko

또한 PTEs 사용 드라이버 추적을 위한
System PTEs Stack Trace 설정후 레지스트리에서 아래 값을 추가하여 PTEs 값을 추적 할 수 있습니다.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management
값 이름: TrackPtes
값 형식: REG_DWORD
값 데이터: 1

위 레지스트리 추가 후 로컬 디버깅 연결 후 !sysptes 4를 입력하면 PTEs를 사용중인 드라이버들을 확인 할 수 있습니다. 

 
Sytstem PTE 란?
System PTEs 즉 시스템 페이지 테이블 엔트리란 I/O공간, 커널 스택, 메모리 디스크립터 리스트 같은 시스템 페이지들을 동적으로 맵핑하는데 사용합니다. 시스템 PTE는 무제한적인 리소스는 아니며 32bit 윈도우 시스템에서 시스템 PTE는 2G의 연속적인 시스템 가상 주소 공간을 이론적으로 나타 낼 수 있을 만큼의 개수를 가집니다.
62bit에서는 128G의 연속적인 가상 주소 공간을 나타 낼 수 있을 만큼의 개수를 가집니다.

PTEs에 관해서 좀더 알고 싶으시면  아래 블로그를 참고 하십시오.
Terminal Server and PTEs
http://blogs.technet.com/b/askperf/archive/2012/06/12/terminal-server-and-ptes.aspx

감사합니다.
 

[참고 사이트]

4GB RAM 조정 기능 및 실제 주소 확장(PAE) 매개 변수에 대한 설명
http://support.microsoft.com/kb/291988

/userva 스위치를 /3GB 스위치와 함께 사용해서 사용자 모드 공간을 2GB에서 3GB 사이의 값으로 조정하는 방법

http://support.microsoft.com/kb/316739/ko

Clint
s
Windows Performance]Free SysPTEs 부족

http://blogs.msdn.com/b/kocoreinternals/archive/2009/07/13/clint-windows-performance-free-sysptes.aspx

Windows XP Windows Server 2003 64비트 버전에서 32비트와 64비트 메모리 아키텍처 비교

http://support.microsoft.com/kb/294418