
많은 분들이 간과하기 쉽지만, 애플리케이션의 리소스 사용량을 관리하는 것은 매우 중요합니다. 특정 프로그램이 비정상적으로 동작하면 다른 프로그램들까지 오작동을 일으킬 수 있으며, 시스템의 CPU나 메모리가 고갈되면 프로그램들은 필요한 자원이 확보될 때까지 실행이 멈추게 됩니다.
Windows 초창기 버전부터 리소스 관리 도구는 꾸준히 발전해 왔습니다. 현재 Windows 7에는 리소스 사용량을 추적하고 제어할 수 있는 3가지 기본 도구가 내장되어 있습니다. 바로 작업 관리자(Task Manager), 성능 모니터(Performance Monitor), 그리고 리소스 모니터(Resource Monitor)입니다. Sysinternals의 Process Monitor 같은 더 강력한 전문 도구도 있지만, 시스템 자원과 저장 공간을 적게 사용하는 기본 제공 도구를 먼저 활용해 보는 것이 좋습니다.
이 글에서는 Windows 7의 리소스 모니터를 사용하여 애플리케이션의 리소스 사용량을 추적하는 방법을 소개합니다.
리소스 모니터 시작하기
Windows에서는 프로그램을 여러 가지 방법으로 실행할 수 있습니다. 여기서는 시작 메뉴의 검색 기능을 이용해 보겠습니다. 시작 메뉴에 resmon이라고 입력하고 검색된 프로그램을 클릭하면 됩니다.

그러면 리소스 모니터 프로그램이 실행됩니다.

이번 설명에서는 예시로 Excel 프로그램을 사용해 보겠습니다.
CPU 및 연관 파일·라이브러리 확인하기
먼저 모니터링할 프로세스를 선택합니다. 여기서는 Excel 프로세스를 선택했습니다.

이제 CPU 탭으로 이동하여 '연결된 핸들(Associated Handles)'과 '연결된 모듈(Associated Modules)' 항목을 펼쳐 봅니다.

또한 해당 프로세스와 연관된 서비스도 확인할 수 있습니다. 이 예시의 Excel은 사용 중인 서비스가 없어서 해당 부분은 표시하지 않았습니다.
연결된 핸들에서는 Excel이 열어 놓은 파일, 이벤트 등 다양한 개체를 확인할 수 있습니다. 핸들 검색 기능을 활용하면 Excel이 특정 파일을 사용하고 있는지 알아볼 수 있습니다. 참고로 시스템이 처리할 수 있는 핸들 수에는 제한이 있으므로, 핸들을 비정상적으로 많이 사용하는 프로그램은 시스템 전체를 멈추게 할 수 있습니다.
연결된 모듈에서는 해당 프로그램이 사용 중인 라이브러리(DLL) 목록을 확인할 수 있습니다.
메모리 사용량 확인하기
리소스 모니터를 사용하면 애플리케이션이 얼마나 많은 메모리를 사용하는지 쉽게 파악할 수 있습니다. 메모리 탭을 클릭해 보세요.

창 하단에는 시스템 메모리 상태를 보여주는 그래프가 표시됩니다. 이 그래프를 통해 시스템이 프로그램들에게 메모리를 원활하게 할당하고 있는지 한눈에 파악할 수 있습니다.
각 프로세스별로 표시되는 정보는 다음과 같습니다.
하드 페이지 폴트/초(지난 1분) – 지난 1분 동안 해당 프로세스가 가상 메모리를 사용한 횟수를 나타냅니다. 가상 메모리 사용이 많다는 것은 프로그램이 대기 시간을 겪고 있다는 의미이므로, 수치가 크게 나타난다면 RAM 추가 장착을 고려할 때입니다.
커밋 메모리(Commit Memory) – 해당 프로세스에 예약된 가상 메모리의 양입니다.
작업 집합(Working Set) – 해당 프로세스가 실제로 사용 중인 물리적 메모리의 양입니다.
공유 가능(Shareable) – 다른 프로그램과 공유할 수 있는 물리적 메모리의 양입니다.
전용(Private) – 다른 프로세스와 공유할 수 없는 물리적 메모리의 양입니다.
대기 체인(Wait Chain) 분석하기
리소스 모니터는 특정 프로세스가 다른 프로그램을 기다리고 있는지 분석하는 기능도 제공합니다. 어떤 프로세스가 다른 프로세스가 점유 중인 리소스를 필요로 하는 경우, 해당 리소스가 해제될 때까지 실행이 중단됩니다.
분석하려는 프로세스를 마우스 오른쪽 버튼으로 클릭한 후 대기 체인 분석(Analyze Wait Chain...)을 선택합니다.

그러면 어떤 프로세스가 우리 애플리케이션의 실행을 막고 있는지에 대한 정보가 표시됩니다.

이 예시에서 Excel은 OSPPSVC.EXE 프로그램이 완료되기를 기다린 후에야 계속 진행될 수 있습니다.
위에서 소개한 기능만으로도 애플리케이션을 모니터링하고 리소스 사용량을 관리하기에 충분합니다. 유용한 작업임에도 불구하고 실제로 활용하는 사용자는 많지 않습니다. 여러분은 리소스 사용량을 추적할 때 어떤 프로그램을 사용하시나요?