Windows/윈도우 공통

[스크랩] 커널메모리(비페이징,페이징 풀) 사용량 모니터링 방법

99iberty 2014. 7. 4. 13:36

 

http://ryuchan.kr/tag/poolsnap

 

Event 2019, 2020 Nonpaged pool이나 Paged pool이 부족 할 경우 발생한다고 여러차례 설명을 하였습니다. Nonpaged pool pagde pool를 합쳐서 pool memory(풀 메모리)라고 합니다.

http://ryuchan.kr/entry/Nonpaged-pool비페이징--Paged-pool페이징-

이 풀 메모리에는 시스템 관련 드라이버나 커널 객체들이 로드 되는데 풀 메모리 부족 현상이 발생하는 주요 이유는 풀 메모리에 로드 되는 드라이버들의 메모리 누수(Leak) 때문입니다.

풀 메모리의 부족으로 Event 2019혹은 2020이 발생 한다면 아래와 같은 4가지 방법으로 시스템의 풀 메모리를 가장 많이 사용하는 Pool tag를 확인 할 수 있습니다. 문제의 pool tag가 확인이 되면 맨 아래 설명 된 findstr 명령어로 해당 Pool tag를 사용하는 시스템 드라이브를 찾을 수 있습니다
.

풀 태그가 무엇인지에 대해서는 이전에 포스팅한 아래 블로그를 참고 하시기 바랍니다
.
http://ryuchan.kr/entry/Pool-Tag-태그란-무엇인가

[
커널 리소스 사용량 확인 방법]

1. Poolmon.exe
메모리 풀 모니터(Poolmon.exe)를 사용하여 커널 모드 메모리 누수 문제를 해결하는 방법
http://support.microsoft.com/kb/177415


2. Windbg or Livekd.exe

명령프롬프트 실행 후 debugging tool이 설치 된 directory로 이동 후 아래 명령어 실행

Nonpaged Pool
Kd.exe -kl -y "srv*c:\symbols*http://msdl.microsoft.com/download/symbols" -c "!poolused /t5 2";;q

Paged Pool
Kd.exe -kl -y "srv*c:\symbols*http://msdl.microsoft.com/download/symbols" -c "!poolused /t5 4";;q


3. Pooltag.exe
PoolTag.exe 이용하여 Nonpaged pool Paged Pool 많이 사용하는 Tag 알아보기

4. Poolsnap
A. Poolsnap 이용한 Event id 2019, 2020 발생 원인 분석 #1

B. Pool Log Analyzer Tool

위의 방법들을 이용해서 어떤 Pool tag가 많은 커널 메모리를 사용하는지 확인이 되었다면 이제는 해당 Pool tag는 어떤 드라이브들이 사용을 하는지에 대한 확인이 필요 합니다.

문제가 발생 했던 서버로 로그온 후 명령 프롬프트 실행 후 C:\windows\system32\drivers 폴더로 이동합니다.

findstr /M /L 풀태그 * .sys (풀 태그의 문자는 반드시 대소문자를 구분 하셔야 합니다.)

만약 위와 같은 툴 들이 준비 되어 있지 않다면 bange.exe나 키보드 덤프 혹은 NMI를 통해서 메모리 덤프를 수집 후에도 확인이 가능 합니다.

감사합니다.

 

----------------------------------------------------------------------------------------------------

http://laigo.kr/421

PoolSnap Log 수집 도구

 

커널 메모리 Leak 이슈가 발생하였을 때, 원인 분석을 위해 PoolSnapLog 툴을 사용하여 사용되는 Paged Pool, NonPaged Pool 사용 태그를 기록할 수 있습니다. 문제가 발생하는 시점까지 데이터를 쭉~ 수집하여 분석해 볼 수 있습니다.


[환경]
Windows 2000 Server


[수집절차]
1. GFlags.exe tool 을 실행하여 'Enable pool tagging' 을 체크합니다.




2. PoolSnapLog
가. C:\Tools 폴더를 생성하여 PoolSnapSVC.exe 파일 복사 후 Command Prompt 에서 아래와 같이 입력합니다.

C:\Tools> PoolSnapSVC -install
Pool Snap Service installed.



3. 위의 두 가지 설정 모두 재부팅 후 적용됩니다.

4. 서비스 관리자 - Pool Snap Service - 시작

~ 문제가 발생할 때까지 충분히 수집합니다 ~


[수집 데이터 확인]
1. C:\poolsnap.log 파일을 열어보면 5분 주기로 아래와 같이 Pool Snap 정보가 기록됩니다.
2. 수집된 로그를 분석하기 위해서는 Pool Log Analyzer Tool 을 사용하면 보다 쉽게 분석이 가능합니다.




[참고자료]
Pool Log Analyzer Tool
http://laigo.kr/335


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

 

------------------------------------------------------------------------------------------

 

http://jkmoon.tistory.com/312

 

Windows Server 2003EE SP2(x86) 환경에서, event log 상에 ID 2019 가 발생하는 경우가 있습니다.

Kernel Memory 영역에서 nonpaged pool 영역이 memory leak으로 인해, max값 가까이 사용되어

o/s 영역에 예기치 않은 문제를 발생시키는 경우입니다. Windbg, poolmon 등을 통해서, 관련 pooltag를

확인 할 수 있으며, 정확한 원인을 확인 하기위해, full dump와 함께 아래와 같이 poolsnap 로깅 설정을

통해, nonpaged pool 사용율의 추이를 확인 할 수 있습니다.

[테스트 환경]

Windows Server 2003R2 EE (x64)

1. Service pack2가 맞는지 확인 하신 후 download하여, 설치합니다.

Windows Server 2003 Service Pack 2 32-bit Support Tools

http://www.microsoft.com/en-us/download/details.aspx?id=15326

2. 새로운 폴더를 생성하신 후, support tool 설치된 경로에서 gflags.exe파일을 아래와 같이 이동합니다.

  • Poolsnapsvc 압축파일도 압축을 푸신 후, 동일한 위치로 이동합니다.
  • Gflags.exe파일을 실행 > enable pool tagging 체크박스를 체크 > apply > ok 합니다.

3. cmd.exe 실행 후 아래와 같이 poolsnapsvc –install 합니다.

poolsnapsvc.exe download

http://itka-textcube.blogspot.kr/2009/09/id-2019-2020-nonpaged-pool-memory-leak.html

4. 시작 > 실행 > services.msc > pool snap service를 시작합니다.

간혹, 시스템 재시작이 필요할 경우도 있습니다.

5. windows폴더 아래 poolsnap.log 파일이 생성되어, 로그가 수집되어지는 지 확인합니다.