본문 바로가기
WIKI 기술 지식 베이스

Datadog에서의 Windows 메모리 메트릭

원문 보기 위키 갱신

Datadog에서의 Windows 메모리 메트릭 (Windows Memory Metrics in Datadog)

Windows는 물리 RAM 사용량 추적부터 가상 메모리 할당, commit charge 이해까지 다양한 모니터링 목적에 쓰이는 여러 메모리 메트릭을 제공해요. 각 메모리 개념이 무엇을 뜻하는지, 그리고 Datadog 메트릭과 어떻게 대응하는지 파악하는 게 중요합니다.

이 가이드에서는 물리 메모리, 가상 메모리, commit charge, commit limit의 핵심 차이를 이해하고, 특정 Windows 메모리 개념에 해당하는 Datadog 메트릭을 식별하며, Datadog 모니터링 도구와 Windows 네이티브 Performance Counter 간의 동등 메트릭을 찾는 방법을 다룹니다.

출처: 문서

본문

개요 (Overview)

Windows는 물리 RAM 사용량 추적부터 가상 메모리 할당, commit charge 이해까지 서로 다른 모니터링 목적을 제공하는 여러 메모리 메트릭이 있어요.

이 가이드를 사용해:

  • 물리 메모리, 가상 메모리, commit charge, commit limit의 핵심 차이를 이해하세요.
  • 특정 Windows 메모리 개념에 해당하는 Datadog 메트릭을 식별하세요.
  • Datadog의 모니터링 도구와 Windows 네이티브 Performance Counter 간의 동등 메트릭을 찾으세요.
  • 특정 모니터링 요구에 적합한 메트릭을 선택하세요.

Windows 메모리 아키텍처에 대한 추가 맥락은 Microsoft의 Memory Performance Information 문서를 참고하세요.

핵심 용어 (Key terms)

  • 물리 메모리 (Physical Memory) — 실제로 사용 중인 물리 RAM. 워킹 셋(working set) 또는 RSS라고도 불러요.
  • Commit charge — RAM이나 페이징 파일로 뒷받침되어야 하는 모든 메모리의 총합. "private bytes"라고도 불러요.
  • Commit limit — 시스템 전체의 최대 commit charge로, 페이징 파일 용량과 물리 RAM의 합이에요.
  • 가상 메모리 (Virtual Memory) — 프로세스가 사용 중인 가상 주소 공간의 양. 가상 주소는 실제 메모리를 차지하지 않고 예약될 수 있으므로, 이 값은 어마어마하게 클 수 있으며 실제로 사용 중인 메모리 양을 대표하지 않을 때가 많아요.

참고: Windows는 물리 메모리를 소진하거나 commit limit에 도달함으로써 메모리 부족(out-of-memory) 상태가 될 수 있어요. 둘 다 모니터링하는 것이 좋습니다.

메트릭 매핑: 핵심 메모리 유형과 모니터링 소스 (Metric mapping: Key memory types to monitoring sources)

다음 표는 특정 Windows 메모리 유형을 모니터링할 때 사용할 Datadog 메트릭을 보여 줘요. 예를 들어 물리 RAM 사용량을 모니터링하려면 system.mem.total, system.mem.usable, system.processes.mem.rss를 사용해요. commit charge(private bytes)를 추적하려면 system.mem.committed나 system.processes.mem.vms를 사용합니다.

트러블슈팅이나 서로 다른 모니터링 도구 간 상관 관계를 확인할 때는 Live Processes 메트릭과 네이티브 Windows Performance Counter 열을 사용해 교차 참조하세요.

메모리 유형 Datadog 시스템 메트릭 Live Processes 메트릭 Windows Performance Counter
물리 메모리 system.mem.total system.mem.usable system.mem.pct_usable system.mem.used system.mem.shared system.processes.mem.rss RSS Memory RSS Memory % \\Memory\\Available Bytes \\Process()\\Working Set \\Process()\\Working Set - Private
Commit Charge system.mem.pagefile.* system.swap.* system.mem.committed system.processes.mem.vms N/A \\Memory\\Committed Bytes \\Process()\\Private Bytes
Commit Limit system.mem.pagefile.total system.swap.total N/A \\Memory\\Commit Limit
가상 메모리 가상 메모리 \\Process()\\Virtual Bytes

예시: Windows Process Explorer

다음 스크린샷은 Windows Process Explorer에 표시된 메모리 값이 위 표의 메트릭에 어떻게 대응하는지 보여 줘요. Process Explorer에서 강조된 열은 Datadog 시스템 메트릭과 Live Processes 뷰에 매핑되는 Working Set(물리 메모리), Private Bytes(commit charge), Virtual Size 메트릭을 보여 줍니다.

Private Bytes 값은 system.processes.mem.vms로, Working Set 값은 system.processes.mem.rss로 매핑됩니다.

pagefile 메트릭 이름 이해하기 (Understanding pagefile metric names)

Windows에서 pagefile과 swap 메모리는 같은 것으로 간주되므로, system.swap.*와 system.mem.pagefile.* 메트릭은 같은 값을 보고해요.

system.mem.pagefile.* 메트릭이 실제로 무엇을 측정하는지 이해하는 것이 중요해요. Datadog 에이전트는 이 메트릭들을 Windows MEMORYSTATUS 구조체에서 수집하며, 다음과 같이 정의해요.

  • dwTotalPageFile: 커밋된 메모리 한계의 현재 크기(바이트). 물리 메모리 + 페이지 파일 크기 - 약간의 오버헤드예요.
  • dwAvailPageFile: 현재 프로세스가 커밋할 수 있는 최대 메모리 양(바이트). 이 값은 시스템 전체의 사용 가능한 commit보다 작아야 해요. 이 값을 계산하려면 GetPerformanceInfo를 호출하고 CommitLimit에서 CommitTotal 값을 빼면 됩니다.

이 정의에 따라 system.mem.pagefile.* 메트릭은 pagefile 크기 자체가 아니라 커밋된 메모리(commit charge와 commit limit)를 측정해요. Datadog은 일관성을 위해 Windows API 명명 규칙을 보존합니다.

각 메트릭이 측정하는 것:

  • system.mem.pagefile.total = Commit Limit (최대 commit charge이지, pagefile 크기가 아님)
  • system.mem.pagefile.used = 현재 Commit Charge (모든 프로세스가 커밋한 메모리이지, pagefile 사용량이 아님)
  • system.mem.pagefile.free = 사용 가능한 Commit (남은 commit 용량이지, 빈 pagefile 공간이 아님)

에이전트 버전별 페이징 파일 메트릭 (Paging file metrics by Agent version)

Agent 7.76 이상 (권장)

페이징 파일 메트릭을 더 명확하고 정확한 이름으로 사용하려면 에이전트 7.76 이상으로 업그레이드하는 것을 Datadog은 권장합니다. 실제로 commit charge를 측정하는 system.mem.pagefile.* 메트릭과 달리, 이 메트릭들은 pagefile.sys 사용량을 직접 모니터링합니다.

에이전트 7.76 이상 버전에서는 페이징 파일(pagefile.sys) 사용량 모니터링에 다음 메트릭을 사용할 수 있어요.

메트릭 설명
system.paging.total 할당된 pagefile의 총량(바이트).
system.paging.used 사용 중인 pagefile의 양(바이트).
system.paging.pct_free 사용되지 않는 pagefile의 비율(%).
system.paging.free 사용되지 않는 pagefile의 양(바이트).

Agent 7.75 이하

7.76보다 이전 버전의 에이전트를 사용한다면, 모든 페이징 파일(pagefile.sys)의 총 크기를 다음 공식으로 계산할 수 있어요(직접 시험하려면 Metric Explorer:

system.mem.pagefile.total - system.mem.total

다음 성능 카운터도 Windows Performance Counters 통합을 통해 수집할 수 있어요.

  • \\Paging File()% Usage
  • \\Paging File()% Usage Peak

더 알아보기 (Learn more)