2007~2011/Windows Platform2011. 4. 28. 11:42

성능 또는 커널 메모리 리소스 부족에 의한 문제 발생 시, 커널 디버깅 또는 수집된 덤프가 있을 경우 windbg 디버깅 툴을 사용하여 메모리 상태 정보를 확인할 수 있습니다. 어떤 정보들을 확인할 수 있는지 일반적인 확인사항에 대해서 아래와 같이 간략히 정리하였습니다. 추가적으로 Paging File size 변화에 따른 상태 값도 비교해 봤습니다. Hyper-V 가상 머신으로 테스트 한 내용입니다.


[환경]
Windows Server 2003 SP2 (x86)
Physical Memory : 1GB


[시나리오1] 
Paging File size 값을 최소 1024MB, 최대 1024MB 로 설정하고 시스템을 재시작한 뒤 확인한 결과

lkd> !vm 4
*** Virtual Memory Usage ***
 Physical Memory:      262004 (   1048016 Kb)
// Physical Memory

 Page File: \??\C:\pagefile.sys
   Current:   1048576 Kb  Free Space:   1040696 Kb
   // Current = Minimum, Free Space 는 현재 Paging File 내의 Free
   Minimum:   1048576 Kb  Maximum:      1048576 Kb
   // 머신에 설정되어 있는 Min / Max 값 

 Available Pages:      210902 (    843608 Kb)
// Standby + Free + Zeroed Pages (Physical Memory), 이미 할당 되었더라도 사용하지 않으면 가용 값이 나타남

 ResAvail Pages:       199914 (    799656 Kb)
// Resident Available Pages 모든 프로세스가 최소의 Working set 상태에 있을 때 사용 가능한 모든 Physical Pages 

 Locked IO Pages:         371 (      1484 Kb)
 Free System PTEs:      77722 (    310888 Kb)
// System PTEs 는 I/O 공간, kernel stack, 메모리 디스크립터 리스트 같은 시스템 페이지들을 동적 맵핑하는 데 
사용되며 이 값은 가용 공간을 위미한다 !sysptes 를 통해 조금 더 상세한 정보를 확인할 수 있다.

 Free NP PTEs:          32766 (    131064 Kb)
 Free Special NP:           0 (         0 Kb)
 Modified Pages:           17 (        68 Kb)
 Modified PF Pages:        17 (        68 Kb)

 NonPagedPool Usage:     3403 (     13612 Kb)
 NonPagedPool Max:      51960 (    207840 Kb)
// NonPagedPool Usage, Max 현재 사용량과 최대 크기

 PagedPool 0 Usage:      2862 (     11448 Kb)
 PagedPool 1 Usage:       496 (      1984 Kb)
 PagedPool 2 Usage:       503 (      2012 Kb)
 PagedPool Usage:        3861 (     15444 Kb)
 PagedPool Maximum:     43008 (    172032 Kb)
// PagedPool Usage, Max 현재 사용량과 최대 크기

 Shared Commit:           874 (      3496 Kb)
 Special Pool:              0 (         0 Kb)
 Shared Process:         2314 (      9256 Kb)
 PagedPool Commit:       3865 (     15460 Kb)
 Driver Commit:          1290 (      5160 Kb)
 Committed pages:       30612 (    122448 Kb)
// Physical Memory + Paging file 중에서 현재 할당되어 있는 pages 값

 Commit limit:         501196 (   2004784 Kb)
// Physical Memory + Paging File = Commit limit




[시나리오3] 
Paging File size 값을 최소 256MB, 최대 4096MB 로 설정하고 시스템을 재시작한 뒤 확인한 결과

lkd> !vm 4

*** Virtual Memory Usage ***
 Physical Memory:      262004 (   1048016 Kb)
 Page File: \??\C:\pagefile.sys
   Current:    262144 Kb  Free Space:    254596 Kb
// 부팅 후 페이징 파일을 거의 사용하지 않으니 최소 크기만큼 비어있는 것으로 확인

   Minimum:    262144 Kb  Maximum:      4194304 Kb
 Available Pages:      207669 (    830676 Kb)
 ResAvail Pages:       199926 (    799704 Kb)
 Locked IO Pages:         371 (      1484 Kb)
 Free System PTEs:      77602 (    310408 Kb)
 Free NP PTEs:          32766 (    131064 Kb)
 Free Special NP:           0 (         0 Kb)
 Modified Pages:           76 (       304 Kb)
 Modified PF Pages:        65 (       260 Kb)
 NonPagedPool Usage:     3191 (     12764 Kb)
 NonPagedPool Max:      51960 (    207840 Kb)
 PagedPool 0 Usage:      2849 (     11396 Kb)
 PagedPool 1 Usage:       496 (      1984 Kb)
 PagedPool 2 Usage:       497 (      1988 Kb)
 PagedPool Usage:        3842 (     15368 Kb)
 PagedPool Maximum:     43008 (    172032 Kb)
 Shared Commit:          1192 (      4768 Kb)
 Special Pool:              0 (         0 Kb)
 Shared Process:         2332 (      9328 Kb)
 PagedPool Commit:       3848 (     15392 Kb)
 Driver Commit:          1290 (      5160 Kb)
 Committed pages:       34435 (    137740 Kb)
 Commit limit:         304588 (   1218352 Kb)




[시나리오2] 
Paging File 을 사용하지 않음으로 설정하고 시스템을 재시작 한 뒤 확인한 결과

*** Virtual Memory Usage ***
 Physical Memory:      262004 (   1048016 Kb)

************ NO PAGING FILE *********************

 Available Pages:      209091 (    836364 Kb)
 ResAvail Pages:       199946 (    799784 Kb)
 Locked IO Pages:         369 (      1476 Kb)
 Free System PTEs:      77772 (    311088 Kb)
 Free NP PTEs:          32766 (    131064 Kb)
 Free Special NP:           0 (         0 Kb)
 Modified Pages:         1528 (      6112 Kb)
 Modified PF Pages:      1528 (      6112 Kb)
 NonPagedPool Usage:     3215 (     12860 Kb)
 NonPagedPool Max:      51960 (    207840 Kb)
 PagedPool 0 Usage:      2882 (     11528 Kb)
 PagedPool 1 Usage:       501 (      2004 Kb)
 PagedPool 2 Usage:       504 (      2016 Kb)
 PagedPool Usage:        3887 (     15548 Kb)
 PagedPool Maximum:     43008 (    172032 Kb)
 Shared Commit:           874 (      3496 Kb)
 Special Pool:              0 (         0 Kb)
 Shared Process:         2320 (      9280 Kb)
 PagedPool Commit:       3895 (     15580 Kb)
 Driver Commit:          1235 (      4940 Kb)
 Committed pages:       30902 (    123608 Kb)
 Commit limit:         239053 (    956212 Kb)



작성자 : Lai Go / 작성일자 : 2011.04.28

Posted by Lai Go