2007~2011/Tools2009. 6. 26. 00:01

Desktop Heap 의 개요, 나타나는 문제 현상의 유형들, Workaround 로써 Desktop Heap 사이즈를 변경하는 것과 관련하여 아래 참조된 링크를 통해서 다양한 자료를 읽어봤습니다. Windows Internals 를 이해하는 건 참 어려운 일입니다. 꾸역 꾸역 이해가 되는 부분만 머리에 넣어 봅니다. 

Desktop Heap 리소스 부족에 의해 나타나는 알려진 현상은 시스템 또는 어프리케이션 응답 지연(hang) 현상이나 작업관리자의 일부 탭이 보이지 않는 등.... 일반적으로 메모리 부족과 관련된 이슈로 판단되는 상황이 일어나게 됩니다. 

Desktop Heap 과 관련된 이슈가 판단되시면 콘솔 세션에서 관리자 권한으로 로그인하여 아래에서 소개하는 Desktop Heap Monitor 를 설치하여 모니터링 할 필요가 있습니다. Desktop Heap Monitor 를 설치하고 Heap size와 사용량을 확인하는 방법을 아래와 같이 정리하였습니다. 

Desktop Heap 영역이 부족할 경우 부족한 영역을 확인하여 Registry 편집을 통해 크기를 변경할 수 있습니다만 이로 인해 상대적으로 또 다른 커널메모리(Paged Pool, Non-Paged Pool, SYSTEM PTEs...) 리소스가 줄어들게 되므로 값을 변경하기 앞서 리소스 부족 원인을 파악하는 게 우선인 것 같습니다. 위에서 언급했던 내용들이 참고자료 링크에 잘 설명되어 있으니 참조하시면 됩니다. 


[다운로드]
Desktop Heap Monitor Version 8.1
http://www.microsoft.com/downloads/details.aspx?familyid=5cfc9b74-97aa-4510-b4b9-b2dc98c8ed8b&displaylang=en



[설치]
symbol 을 설치합니다. 웹사이트 접근이 가능한 머신이어야 합니다. 

C:\kktools\dheapmon8.1\x86> dheapinst.exe -y srv*http://msdl.microsoft.com/download/symbols 


Desktop Heap Monitor 설치가 성공적으로 되었다는 메시지를 확인합니다.



[실행]
-l 옵션을 사용하여 Driver 를 로드하고 -s 옵션을 사용하여 summary 를 출력합니다.

C:\kktools\dheapmon8.1\x86> dheapmon -l
C:\kktools\dheapmon8.1\x86> dheapmon -s


Heap Size와 Used Rate(%) 를 살펴보고 Limit 을 도달하지 않았는지 확인해 봅니다. 



Session 0 는 콘솔을 의미합니다. Session 0 영역 아래에 Windows station(Winsta0) 이 포함되며 Windows Station 은 desktop object를 포함하고 있습니다. 이 Desktop object 영역에서 Win32 Processes 가 실행됩니다. 그리고 Desktop object 는 Desktop Heap 과 조합되며 Desktop Heap 영역에 User interface objects(Windows, memus, hooks)가 저장됩니다. 응용 프로그램이 User interface object를 사용한다면 user32.dll, gdi32.dll 을 호출하여 object 를 할당하게 되는 구조입니다.



[참고자료]
Desktop Heap Overview
http://blogs.msdn.com/ntdebugging/archive/2007/01/04/desktop-heap-overview.aspx

Desktop Heap, part 2 
http://blogs.msdn.com/ntdebugging/archive/2007/07/05/desktop-heap-part-2.aspx

Desktop Heap 문제
http://blogs.technet.com/sankim/archive/2008/04/28/desktop-heap.aspx

Desktop Heap Monitor
http://byung.egloos.com/4765105

Desktop Heap Monitor Version 8.1
http://www.microsoft.com/Downloads/details.aspx?FamilyID=5cfc9b74-97aa-4510-b4b9-b2dc98c8ed8b&displaylang=en

Error message that is similar to the following when you try to install the Desktop Heap Monitor tool: "dheapinst - Win32k.sys symbol load error, correct symbol required"
http://support.microsoft.com/kb/914216

"Out of Memory" error message appears when you have a large number of programs running
http://support.microsoft.com/kb/126962

INFO: Services, Desktops, and Window Stations
http://support.microsoft.com/?id=171890

Windows and the ClearCase process limit: Understanding the desktop heap
http://www.ibm.com/developerworks/rational/library/05/1220_marechal

User32.dll or Kernel32.dll fails to initialize
http://support.microsoft.com/kb/184802/en-us

How to correct common User32.dll file errors
http://support.microsoft.com/kb/142676/en-us



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

Posted by Lai Go