Windows 2000 Server, Windows Server 2003 32bit 운영체제에서는 커널 메모리 부족에 따른 장애 유형을 경험할 수 있습니다. 만약 Crash 또는 Hang 덤프가 수집되었다면 Debugging Tool 을 통해 !vm 명령을 통해 최대 값을 확인해 볼 수 있습니다만 덤프를 받지 않고 최대 값을 확인할 수 있는 방법이 있을까요?

OS 버전과 Physical Memory 사이즈를 토대로 인터넷에서 구할 수 있는 Kernel memory chart 값이 비교하여 해당 시스템의 최대 Paged Pool, NonPaged Pool size 를 확인해 볼 수 있고 WinDbg 를 사용하여 커널 디버깅을 통해서도 확인할 수 있습니다만  이보다 간편하고 정확한 방법이 있을까요?

다행스럽게 Process Explorer 를 통해 확인할 수 있습니다. Public symbols, 최신 버전의 dbghelp.dll 을 이용하면 됩니다.


[환경]
Windows Server 2003 R2 SP2
Physical Memory : 2GB


[확인방법]
Windows 작업 관리자 - 성능 탭을 통해 확인해 보면 현재 사용 중인 Paged Pool, NonPaged 커널 메모리 사용량을 확인할 수 있습니다만 최대 값은 확인할 수 없습니다.




Process Explorer - View - System Information 메뉴를 통해서 커널 메모리 정보를 조회하여도 no symbols 이라는 메시지와 함께 Paged, Nonpaged 커널 메모리의 최대 값을 확인할 수 없습니다.




Process Explorer - Options - Configure Symbols 메뉴에서 Dbghelp.dll path 와 Symbols path 를 입력합니다.

1. Dbghelp.dll path : C:\<Windbg 설치 경로>\dbghelp.dll
2. Symbols path : srv*c:\symbols*http://msdl.microsoft.com/download/symbols


Dbghelp.dll path 의 기본 설정값은 %SystemRoot%\system32\Dbghelp.dll 파일입니다만 Windows Server 2003 에서 제공되는 5.2 버전 대신 최신 버전의 Debugging Tools for Windows 를 설치한 후 해당 툴이 위치한 경로에 있는 상위 버전의 Dbghelp.dll 파일을 지정해야 합니다.




Dbghelp.dll 과 Symbols path 를 올바르게 설정하였다면 아래와 같이 Paged, NonPaged 커널 메모리의 최대값을 확인할 수 있습니다.




아래 그림은 참고로 Windows 7 64bit 환경에서 확인한 커널 메모리 사이즈 정보입니다. Dbghelp.dll 은 6.1 버전이며 별도의 Windbg 툴을 설치하지 않아도 확인할 수 있습니다.




[참고자료]
Debugging Tools for Windows - Overview
http://www.microsoft.com/whdc/devtools/debugging/default.mspx

DbgHelp Versions
http://msdn.microsoft.com/en-us/library/ms679294(VS.85).aspx

Process Explorer 다운로드 및 심볼 설정
http://laigo.kr/21

How to debug application crash/hang in production environment?
http://blogs.msdn.com/msdnts/archive/2006/11/24/how-to-debug-application-crash-hang-in-production-environment.aspx


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

Posted by Lai Go