기사 대표 이미지

코드 리뷰어와 시스템 엔지니어라면 한 번쯤 경험했을 것입니다. 작업 관리자의 CPU 사용량은 5% 미만으로 평온한데, 정작 시스템은 프리징(Freezing) 현상이 발생하거나 응답이 없는 상황 말입니다. 우리는 흔히 작업 관리자를 시스템의 '거울'이라 믿지만, 사실 이 도구는 운영체제가 사용자에게 보여주기 위해 가공한 '시각화된 요약본'에 불과합니다.



1. 프로세스 합계가 전체 사용량과 일치하지 않는 이유

작업 관리자의 '프로세스' 탭에 나열된 각 프로세스의 CPU 점유율을 모두 더해도 상단의 전체 CPU 사용량과 일치하지 않는 경우가 빈번합니다. 이는 커널 모드(Kernel Mode)인터럽트(Interrupt) 때문입니다.

운영체제의 핵심인 커널에서 발생하는 작업이나, 하드웨어 드라이버가 CPU에 요청을 보내는 인터럽트 처리는 개별 사용자 프로세스 목록에 명확히 카운팅되지 않을 수 있습니다. 즉, 하드웨어 레벨의 부하는 프로세스 목록이라는 '사용자 공간(User Space)'의 뷰에 완전히 반영되지 않을 수 있다는 뜻입니다.



2. 메모리(RAM)의 함정: 가용 메모리는 왜 항상 존재하는가?

많은 사용자가 '사용 중인 메모리' 수치에만 집중합니다. 하지만 윈도우의 메모리 관리 알고리즘은 매우 공격적입니다. 윈도우는 남는 RAM을 놀리지 않기 위해 '캐시된 데이터(Cached Data)'로 채워 넣습니다. 이는 디스크 I/MS를 줄이기 위한 최적화 작업입니다.

작업 관리자에서 '사용 가능한' 메모리가 높게 나타나더라도, 실제로는 시스템이 향후 실행될 앱을 위해 미리 읽어온 데이터가 점유하고 있을 수 있습니다. 따라서 단순히 '남은 용량'만 보고 시스템의 여유를 판단하는 것은 위험합니다. '커밋된(Committed)' 크기와 '페이징 풀(Paged Pool)'의 변화를 함께 관찰해야 실제적인 메모리 압박 상태를 파악할 수 있습니다.



3. 디스크 I/O: 처리량(Throughput)과 지연 시간(Latency)의 괴리

디스크 사용률이 100%를 찍고 있는데 정작 데이터 전송 속도는 매우 낮게 표시되는 현상을 본 적이 있을 것입니다. 이는 디스크의 '전송량' 문제가 아니라 '응답 시간(Response Time)'의 문제입니다. 작은 크기의 무작위 읽기/쓰기(Random I/O)가 빈번하게 발생하면 디스크 헤더의 움직임이 극대화되며, 이는 처리량은 낮지만 점유율은 100%인 상태를 만듭니다. 이때의 지표는 데이터의 양이 아니라 디스크가 요청을 처리하기 위해 얼마나 '대기'하고 있는지를 나타냅니다.



결론: 엔지니어를 위한 제언

작업 관리자는 훌륭한 1차 진단 도구이지만, 정밀한 디버깅을 위해서는 리소스 모니터(Resource Monitor)Sysinternals Suite의 도구들을 병행 사용해야 합니다. 수치 뒤에 숨겨된 '대기 시간'과 '커널 모드 점유율'을 읽을 수 있을 때, 비로소 진정한 시스템 트러블슈팅이 가능해집니다.