일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 프로세스 CPU 사용량
- dsquery
- LiveKD
- FTP7.5
- Windows Server 2016
- paged pool
- Local TempDB
- SQL Server 2008
- 인문고전
- MSCS on VMWare
- windows debugging tool
- nonpaged pool
- 클러스터
- failover cluster
- windows update
- Windows Server 2016 Hyper-v Cluster
- Windows Server 2008
- iSCSI target
- 안철수
- windbg
- windows media service
- Xperf
- cluster node as Domain controller
- 작업관리자
- 터키여행
- Nested VM
- ftp7.5 장애조치 클러스터
- SQL Server 2012R2 FCI
- Session space
- Hyper-V
- Today
- Total
류짱:Beyond MySelf
클러스터 된 파일 서버의 Nonpaged Pool 메모리 누수 발생 본문
Windows Server 2012R2 로 구성 된 클러스터 된 파일 서버에서 Nonpaged Pool 사용률이 비 정상적으로 높아
어떤 녀석이 많은 메모리를 사용 중인지 확인 하기 위해서 Livekd를 이용해서 라이브 디버깅을 해 보았습니다.
[환 경]
OS : Fail Over Cluster File Server on Windows Server 2012R2
[증 상]
Nonpaged Paginng Pool의 메모리 사용률이 비 정상적으로 높앞으며 시스템 프로세스가 사용하는 핸들 수 도 2만이
넘었음.
[확인 사항]
- 파일 서버 이기 때문에 오픈 된 파일이나 연결 된 사용자 사세션이 많은 지 확인 해 보았으나 연결 된 세션이 많지 않았음
- 각 노드의 TCP 커넥션 수 확인
원인 분석을 위해서
Windows debugging tool 설치 후 해당 설치 디렉터리에 Livekd 를 복사한다.
디버깅을 위한 심볼 Fix를 위해서
파일 서버에서 MS 심볼 서버로 접근 할 수 없기 때문에 로컬 컴퓨터(Windows 8.1)에서 widbg를 실행 후 덤프를 하나 열고
심볼을 받아서 해당 심볼 중 아래 두 폴더를 라이브 디브깅을 할 폴더로 복사한다.
분석을 진행 할 서버에서 명령 프롬프트를 이용해서 Windows debugging 폴더로 이동하여
Livekd -y c:\symbols
명령어 입력 후
정상적으로 로컬 디비깅이 실행 되면 리소스 확인에 필요한 커멘드를 이용해서 리소스 사용률 확인
0: kd> !vm 4
*** Virtual Memory Usage ***
Physical Memory: 6288149 ( 25152596 Kb)
Page File: \??\C:\pagefile.sys
Current: 26214400 Kb Free Space: 25872832 Kb
Minimum: 26214400 Kb Maximum: 75497472 Kb
unable to get nt!MmSystemLockPagesCount
Error reading free nonpaged PTEs 0000000000000004
Available Pages: 1703176 ( 6812704 Kb)
ResAvail Pages: 2875193 ( 11500772 Kb)
Locked IO Pages: 0 ( 0 Kb)
Free System PTEs: 59377 ( 237508 Kb)
Free NP PTEs: 0 ( 0 Kb)
Modified Pages: 8080 ( 32320 Kb)
Modified PF Pages: 8089 ( 32356 Kb)
NonPagedPool 0 Used: 1455190 ( 5820760 Kb)
NonPagedPool 1 Used: 1651617 ( 6606468 Kb)
NonPagedPool Usage: 3250905 ( 13003620 Kb)
NonPagedPool Max: 4294967296 (17179869184 Kb)
PagedPool 0 Usage: 147291 ( 589164 Kb)
PagedPool 1 Usage: 42232 ( 168928 Kb)
PagedPool 2 Usage: 35308 ( 141232 Kb)
PagedPool Usage: 224831 ( 899324 Kb)
PagedPool Maximum: 4160749568 (16642998272 Kb)
Shared Commit: 348374 ( 1393496 Kb)
Special Pool: 0 ( 0 Kb)
Shared Process: 11828 ( 47312 Kb)
PagedPool Commit: 224941 ( 899764 Kb)
Driver Commit: 55834583195 (223338332780 Kb)
Committed pages: 4696802 ( 18787208 Kb)
Commit limit: 12841749 ( 51366996 Kb)
Nopaged Pool을 가장 많이 사용하는 top5 Pool tag 확인
0: kd> !poolused /t5 2
Sorting by NonPaged Pool Consumed
Pool Used:
NonPaged Paged
Tag Allocs Used Allocs Used
MPP. 49781288 10354777664 0 0 UNKNOWN pooltag ' MPP', please update pooltag.txt
VoSm 3689 240181440 0 0 Bitmap allocations , Binary: volsnap.sys
Mdl 81341 170719024 0 0 Io, Mdls
ConT 387 140668928 0 0 UNKNOWN pooltag 'ConT', please update pooltag.txt
Cont 1112 106383968 0 0 Contiguous physical memory allocations for device dr
TOTAL 51007260 11496509728 604302 758159552
MPP 풀태그를 사용하는 시스템 드라이버 확인
C:\Windows\System32\drivers>findstr /l /m MPP *.sys
afd.sys
ClusDisk.sys
CsvFlt.sys
CsvFs.sys
ds4dsm.sys
ds4utm.sys
dxgkrnl.sys
FWPKCLNT.SYS
http.sys
mup.sys
ndis.sys
ndiswan.sys
pacer.sys
rassstp.sys
sdstor.sys
SerCx.sys... 등등
대부 분 MS에서 제공하는 드라이브 이나 Ds4dsm.sys와 Ds4utm.sys만 IBM 에서 제공한 모듈로 해당 모듈의 최신 버전 확인 필요
추가로 서치를 좀 해보니 해당 모듈에서 메모리 릭이 발생 한 사례가 있네요.
http://www-01.ibm.com/support/docview.wss?uid=ssg1S1005069
[참고자료]
http://blogs.technet.com/b/askperf/archive/2011/09/23/getting-to-know-the-mmst-pool-tag.aspx
https://windowsarchitecture.wordpress.com/2015/01/12/windows-2012-r2-poolmon/