'system.mem.used' 메트릭 계산하기
'system.mem.used' 메트릭 계산하기 (Calculating the 'system.mem.used' metric)
같은 호스트인데도 system.mem.used 값이 일반 시스템 도구가 보여 주는 값과 다르게 나올 때가 있어요. 우연이 아니에요. Datadog이 system.mem.used 메트릭을 계산하는 방식이 일반 시스템 리소스 보고 도구와 다르기 때문입니다.
가장 대표적인 차이가 바로 캐시(cached) 메모리를 계산에 포함하느냐예요. 이 글에서는 Datadog의 계산 방식을 예시로 보여 드릴게요.
출처: 문서
본문
Datadog이 system.mem.used 메트릭을 계산하는 방식은 어떤 때는 일반적인 시스템 리소스 보고 도구가 보여 주는 값과 다르게 나올 수 있어요.
예를 들어 Ubuntu 머신에서 free -m을 실행하면 다음과 같은 메모리 분석 결과가 나올 수 있습니다(값은 메가바이트 단위).
| total | used | free | shared | cached | available |
|---|---|---|---|---|---|
| 128831 | 1203 | 71975 | 4089 | 55653 | 122380 |
같은 머신에서 실행 중인 Datadog 에이전트는 system.mem.used 메트릭을 56856 MB로 보고하는데, 이는 free -m이 보여 주는 used 메모리 값 1203 MB와 분명히 다르죠.
이 차이가 생기는 이유는 Datadog이 used 메모리 공식에 캐시 메모리를 포함하기 때문이에요. free -m은 그렇지 않습니다.
Datadog은 used 메모리를 다음과 같이 계산해요.
- system.mem.used(56856) = system.mem.total(128831) - system.mem.free(71975)
다시 말하지만 Datadog의 system.mem.used 메트릭은 캐시 메모리를 포함하므로, used 메모리에서 이 캐시 메모리를 빼면 다음과 같은 값이 나와요.
- system.mem.used(56856) - system.mem.cached(55653) = 1203
1203 MB — 위 예시에서 free -m이 보고한 used 메모리 값과 정확히 같죠.
system.mem.usable 메트릭은 free 메모리 + 캐시 메모리 + 버퍼를 나타내요(Linux에서는 가능하면 /proc/meminfo의 "MemAvailable" 속성을 반영합니다).