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

댓글을 달아 주세요

  1. qa

    안녕하세요! 좋은 정보 감사합니다.

    위 내용중 질문이 있습니다. 마지막 캡쳐화면에 Paged Limit 134,217,728이면 134GB를 의미하는 건지요?
    물리 메모리가 8GB로 확인됩니다만 Paged Limit가 이정도 까지 가능한건지 의문입니다.
    WIN2008 R2환경에서 테스트 해봤는데 비슷한 수치로 나오더라구요... ^^

    감사합니다. ^^

    2015.12.07 17:54 [ ADDR : EDIT/ DEL : REPLY ]
    • 고맙습니다.

      예를 들어 Windows Server 2008 32-bit 운영체제에서는 물리 메모리를 아무리 많이 꽂더라도 Paged pool 크기를 2GB 이상 사용할 수 없었습니다만 64-bit 운영체제에서는 최대 128GB를 사용할 수 있다는 의미겠죠. 물리 메모리가 8GB라면 당연히 커널/유저 메모리 합이 8GB를 넘을 수 없겠죠.... :)

      여기 블로그를 보시면 좀 더 자세한 내용이 있습니다.
      http://blogs.technet.com/b/markrussinovich/archive/2009/03/26/3211216.aspx

      좋은 하루되세요~

      2015.12.08 09:58 신고 [ ADDR : EDIT/ DEL ]