리눅스(Linux) 서버 관리자라면 htop이나 top 같은 도구를 이용해 시스템 상태를 모니터링하는 것이 일상입니다. 하지만 화면에 빼곡히 나타나는 수많은 지표들이 정확히 무엇을 의미하는지, 그리고 이들이 시스템 성능에 어떤 영향을 미치는지 명확히 이해하는 것은 쉽지 않습니다. 이 기사는 htop 화면의 주요 지표들이 어디서 오고, 어떤 의미를 가지며, 실제 문제 해결에 어떻게 활용될 수 있는지 깊이 있게 파고듭니다.
시스템의 '업타임(uptime)'은 /proc/uptime 파일에서 읽어오며, 시스템이 켜져 있던 총 시간과 유휴(idle) 시간을 초 단위로 보여줍니다. 특히 멀티코어 시스템에서는 유휴 시간이 코어별로 합산되어 전체 업타임보다 길게 나타날 수 있습니다. '로드 에버리지(Load average)'는 단순히 CPU 사용률이 아니라, 실행 중이거나 실행 대기 중인 프로세스, 그리고 인터럽트 불가능(uninterruptible) 상태의 프로세스를 포함하는 지수 감쇠 이동 평균입니다. 따라서 로드 에버리지가 높더라도 CPU 사용률이 낮을 수 있는데, 이는 주로 디스크 I/O 대기나 네트워크 지연 등으로 인한 인터럽트 불가능 상태 프로세스가 많을 때 발생합니다. '태스크(Tasks)'는 시스템의 전체 프로세스 수와 실행 중인 프로세스 수를 나타내며, 각 프로세스에는 고유한 PID(Process ID)가 할당됩니다. 이 PID를 통해 /proc/<pid>/ 디렉터리에서 해당 프로세스의 상세 정보를 확인할 수 있습니다.
프로세스 상태 코드(R, S, D, Z, T 등)는 시스템의 건강 상태를 진단하는 중요한 단서입니다. 'R'은 실행 중이거나 실행 대기 중인 상태, 'S'는 인터럽트 가능한 대기 상태, 'D'는 인터럽트 불가능한 대기 상태를 의미합니다. 특히 'D' 상태의 프로세스가 많다면 디스크 I/O 문제나 네트워크 파일 시스템(NFS) 지연 등을 의심해볼 수 있습니다. 'Z'는 좀비(zombie) 프로세스로, 종료되었지만 부모 프로세스가 아직 자원을 회수하지 않은 상태를 나타냅니다. 이는 대개 프로그램 버그의 신호일 수 있습니다. 메모리 지표인 VIRT(가상 메모리), RES(물리 메모리), SHR(공유 메모리) 등은 서로 다른 관점에서 메모리 사용량을 보여주므로, 한 가지 숫자만으로 실제 메모리 사용량을 단정하기 어렵습니다. 이러한 지표들을 종합적으로 이해하고 분석하는 능력은 시스템 관리자가 문제를 정확히 진단하고 해결하는 데 필수적입니다.