성능 또는 커널 메모리 리소스 부족에 의한 문제 발생 시, 커널 디버깅 또는 수집된 덤프가 있을 경우 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
*** 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)
*** 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)
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