모니터링에서 가장 기본적이고 중요한 지표 중 하나는 CPU 사용량입니다. 와탭 역시 이 핵심적인 지표를 지원하고 있는데요. 그렇다면 CPU 사용량 지표는 무엇을 의미하며, 이 데이터는 어떻게 생성되고 관리될까요? 이번 글에서는 CPU 데이터의 원리와 관리 방식을 자세히 살펴보겠습니다.
/proc/stat
Linux 시스템에서 /proc/stat
파일은 CPU 사용량, 시스템 부하, 프로세스 통계 등 다양한 시스템 성능 정보를 제공하는 가상 파일입니다. 특히 CPU 사용량 정보는 시스템 모니터링과 성능 분석에 필수적인 데이터를 제공합니다.
/proc/stat
파일의 역할과 구조/proc/stat
파일은 가상 파일 시스템(procfs)의 일부로, 시스템과 프로세스 관련 통계 정보를 제공합니다. 이 파일을 읽으면 현재 시스템 상태를 반영한 최신 정보를 얻을 수 있죠. 파일 내용은 아래와 같이 구성되어 있습니다.
cpu 4705 150 2154 136239 0 0 0 0 0 0
우리는 이 지표 중 user가 몇 %인지 알고 싶습니다. 그러나 /proc/stat
에서 제공되는 지표는 %가 아닌 4705와 같은 숫자 형태로 나타나며, 이는 비율이 아닌 특정 단위를 나타냅니다. 어떤 단위를 의미하는걸까요?
1. 프로세스의 상태에 따른 시간 누적
프로세스가 실행될 때 커널은 프로세스의 실행 모드에 따라 적절한 시간 카운터를 증가시킵니다. 사용자 모드에서 실행되면 user
카운터가 증가하게 됩니다.
2. /proc/stat
에 데이터 반영
/proc/stat
파일을 통해 사용자 공간에 제공합니다.타이머 틱(Timer Tick) 기반 업데이트
1. 타이머 틱과 HZ 값
Linux 커널은 타이머 틱을 통해 CPU 시간을 추적합니다. 타이머 틱은 일정한 주기로 발생하는 인터럽트로, 커널은 이를 사용하여 프로세스 스케줄링, 시간 계산, CPU 시간 누적 등을 수행합니다.
HZ 값 확인 방법:
grep CONFIG_HZ /boot/config-$(uname -r)
위 명령어를 통해 현재 시스템의 HZ 값을 확인할 수 있습니다.
2. CPU 상태 추적 메커니즘
커널은 프로세스가 실행되는 동안 해당 프로세스의 상태에 따라 CPU 시간을 누적합니다.
1. CPU 시간 누적 과정
user
또는 다른 카운터를 증가시킵니다.2. /proc/stat
파일 출력
user
카운터에 누적된 값은 시스템 부팅 이후 사용자 모드에서 소비된 총 시간입니다.이제 /proc/stat
에서 보이는 데이터가 어떤 데이터인지 알았습니다. 그렇다면 실제로 % 값은 어떻게 계산될까요? 먼저 /proc/stat
의 CPU 시간은 누적 값이므로, 일정 간격으로 값을 읽어 차이를 계산해야 합니다. 예를 들어, 1초 간격으로 user
값을 읽고 두 값의 차이를 계산하여 해당 기간 동안의 사용자 모드 CPU 사용 시간을 구합니다.
퍼센트 계산을 위해서는 모수가 되는 값이 필요합니다. 모수는 total로, system, user, io wait, nice 등 모든 카운터의 차이를 합산한 값입니다. total 또한 동일한 간격으로 값을 읽어 차이를 계산합니다. 이를 통해 사용자 모드 CPU 사용률은 (delta_user / delta_total) * 100
으로 계산할 수 있습니다.
# 첫 번째 읽기
cat /proc/stat | grep '^cpu ' > cpu_stat1
sleep 1
# 두 번째 읽기
cat /proc/stat | grep '^cpu ' > cpu_stat2
# 두 파일에서 필요한 필드를 추출하여 차이를 계산
# delta_user = user2 - user1
# delta_total = (user2 + nice2 + system2 + ... ) - (user1 + nice1 + system1 + ... )
# CPU 사용률 계산
CPU_usage = (delta_user / delta_total) * 100
CPU 사용량을 측정하는 것은 시스템 성능과 안정성을 유지하는 데 핵심적인 작업입니다. /proc/stat
파일의 데이터를 활용하면 시스템 부팅 이후 누적된 사용자 모드 CPU 시간을 기반으로 일정 간격의 데이터 차이를 계산하여 CPU 사용률을 산출할 수 있습니다. 이 과정에서 타이머 틱과 HZ 값의 개념을 이해하면 더욱 정확한 분석이 가능하며, 이를 통해 실시간 모니터링 시스템을 구축할 수 있습니다. CPU 사용량 지표는 단순한 숫자 이상의 의미를 가지며, 이를 효과적으로 활용하면 시스템 성능 최적화와 문제 진단에 중요한 통찰을 제공할 수 있습니다.