모니터링에서 가장 기본적이고 중요한 지표 중 하나는 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와 같은 숫자 형태로 나타나며, 이는 비율이 아닌 특정 단위를 나타냅니다. 어떤 단위를 의미하는걸까요?
프로세스가 실행될 때 커널은 프로세스의 실행 모드에 따라 적절한 시간 카운터를 증가시킵니다. 사용자 모드에서 실행되면 user
카운터가 증가하게 됩니다.
/proc/stat
에 데이터 반영/proc/stat
파일을 통해 사용자 공간에 제공합니다.Linux 커널은 타이머 틱을 통해 CPU 시간을 추적합니다. 타이머 틱은 일정한 주기로 발생하는 인터럽트로, 커널은 이를 사용하여 프로세스 스케줄링, 시간 계산, CPU 시간 누적 등을 수행합니다.
HZ 값 확인 방법:
grep CONFIG_HZ /boot/config-$(uname -r)
위 명령어를 통해 현재 시스템의 HZ 값을 확인할 수 있습니다.
커널은 프로세스가 실행되는 동안 해당 프로세스의 상태에 따라 CPU 시간을 누적합니다.
user
또는 다른 카운터를 증가시킵니다./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
/proc/stat
파일의 데이터를 활용하면 시스템 부팅 이후 누적된 사용자 모드 CPU 시간을 기반으로 일정 간격의 데이터 차이를 계산하여 CPU 사용률을 산출할 수 있습니다. 이 과정에서 타이머 틱과 HZ 값의 개념을 이해하면 더욱 정확한 분석이 가능하며, 이를 통해 실시간 모니터링 시스템을 구축할 수 있습니다. CPU 사용량 지표는 단순한 숫자 이상의 의미를 가지며, 이를 효과적으로 활용하면 시스템 성능 최적화와 문제 진단에 중요한 통찰을 제공할 수 있습니다.