Parca란 무엇인가
eBPF 시대의 Continuous Profiling 입문
서버 성능 문제를 다뤄본 개발자라면 한 번쯤 이런 상황을 겪어봤을 것이다.
• CPU 사용률은 낮은데 서비스는 느리다
• APM에는 특별한 트랜잭션 병목이 보이지 않는다
• 로그도, 메트릭도 “이상 없음”인데 사용자는 불만을 제기한다
이런 문제는 단순한 리소스 부족이 아니라,
“어디에서 시간이 쓰이고 있는지”를 제대로 보지 못할 때 발생한다.
이 지점에서 등장하는 도구가 바로 Parca다.
⸻
기존 성능 분석 방식의 한계
1. 전통적 프로파일링 도구
• gprof, perf, oprofile
• 특정 시점에 직접 실행
• 분석 대상 프로세스를 의도적으로 멈추거나 개입
문제는 명확하다.
• 장애는 항상 재현되지 않는다
• 재현을 위해 프로파일링을 켜는 순간, 상황이 달라진다
• 운영 환경에서는 상시 사용이 사실상 불가능하다
즉, “문제가 발생한 그 순간”의 데이터를 놓치기 쉽다.
⸻
2. APM(Application Performance Monitoring)
APM은 분명 강력하다.
• 트랜잭션 단위 분석
• 응답 시간, 에러율, DB 쿼리 추적
• 비즈니스 로직 관점에서의 가시성
하지만 APM에도 사각지대는 있다.
• CPU 내부에서 무엇이 실행되고 있는지는 알기 어렵다
• 커널 함수, 스케줄링 지연, lock 경합은 잘 보이지 않는다
• 샘플링 기반이 아닌 경우, 오버헤드가 커질 수 있다
APM은 “요청 흐름”에는 강하지만,
“실제 CPU 시간의 사용처”를 설명하는 데는 한계가 있다.
⸻
Continuous Profiling이라는 접근
여기서 나오는 개념이 Continuous Profiling이다.
기존 방식
• 문제가 발생하면 → 분석 도구 실행 → 원인 추적
Continuous Profiling
• 평상시부터 항상 프로파일링
• 문제가 발생하면 → 이미 쌓여 있는 데이터로 분석
즉,
“문제가 생겼을 때 수집을 시작하는 것”이 아니라
**“항상 수집하고, 필요할 때 본다”**는 발상이다.
이 접근을 가능하게 만든 핵심 기술이 바로 eBPF다.
⸻
eBPF가 바꾼 게임의 규칙
eBPF 이전에는 커널 수준의 관측이 쉽지 않았다.
• 커널 모듈 작성 필요
• 시스템 안정성 리스크
• 운영 환경 적용이 부담스러움
eBPF는 이 흐름을 완전히 바꿨다.
• 커널에 코드를 안전하게 주입
• 검증(Verifier)을 통한 안정성 확보
• 런타임에 동적 로딩/제거 가능
• 낮은 오버헤드
Parca는 이 eBPF를 기반으로,
**“상시 CPU 프로파일링”**을 현실적인 선택지로 만든 도구다.
⸻
Parca란 무엇인가
Parca는 eBPF 기반 Continuous Profiling 시스템이다.
핵심 목표는 단순하다.
“프로세스와 컨테이너가
CPU 시간을 어디에서 소비하는지
항상, 낮은 오버헤드로 보여준다.”
이를 위해 Parca는 다음과 같은 특징을 가진다.
• 샘플링 기반 CPU profiling
• 유저 공간 + 커널 공간 스택 모두 수집
• Flamegraph 중심의 시각화
• 장시간 데이터 보존 및 비교 가능
중요한 점은,
Parca가 트레이싱 도구도, APM도 아니라는 것이다.
⸻
Parca는 관측성(Observability) 도구인가?
결론부터 말하면 그렇다.
하지만 전통적인 의미의 관측성과는 조금 다르다.
• Metrics: “얼마나 사용 중인가”
• Logs: “무슨 일이 발생했는가”
• Traces: “요청이 어떻게 흘렀는가”
• Parca: “CPU 시간은 정확히 어디에 쓰였는가”
Parca는
**시스템 내부의 시간 분해능(time attribution)**을 제공한다.
즉,
• CPU 80% 사용 → ❌
• CPU 80% 중 35%는 특정 함수,
20%는 커널 스케줄링,
15%는 lock 대기 → ⭕
이 차이는 매우 크다.
⸻
Parca가 풀어주는 질문들
Parca를 사용하면 다음과 같은 질문에 답할 수 있다.
• CPU가 바쁜 이유는 무엇인가?
• 특정 배포 이후 CPU 사용 패턴이 달라졌는가?
• 유저 코드와 커널 코드 중 어디에서 시간이 쓰이는가?
• 컨테이너별로 CPU hot path는 무엇인가?
• “느린데 이유를 설명할 수 없는” 문제의 원인은?
이 질문들은
기존 메트릭이나 APM만으로는 답하기 어려운 것들이다.
⸻
Parca는 무엇을 대체하지 않는다
중요한 점 하나를 짚고 가자.
Parca는:
• APM을 대체하지 않는다
• 기존 모니터링 에이전트를 없애지 않는다
• 로그 분석을 대신하지 않는다
Parca는 추가되는 관측 축이다.
특히 다음과 같은 경우에 강력하다.
• 성능 민감한 서버
• 시스템 프로그래밍 영역
• 커널/네이티브 코드 비중이 높은 환경
• 컨테이너 기반 인프라
⸻
이 연재에서 다룰 것
이 연재에서는 다음을 목표로 한다.
• Parca를 “설치하는 법”이 아니라
“이해하고 해석하는 법”
• Flamegraph를 보는 눈
• eBPF 기반 profiling의 실제 의미
• APM과 Parca를 어떻게 함께 쓸 것인가
다음 편에서는
**Parca의 전체 아키텍처(Server, Agent, Storage)**를 그림 없이도 머릿속에 그릴 수 있도록 정리해 보겠다.
⸻
다음 편 예고
2편. Parca 아키텍처 한눈에 보기 – Server, Agent, Storage 구조
'Parca' 카테고리의 다른 글
| 6편. 실전 사례 ① – CPU 사용률은 정상인데, 성능은 느린 이유 (0) | 2025.12.18 |
|---|---|
| 5편. Flamegraph 제대로 읽기– Parca UI 해석 가이드 (0) | 2025.12.18 |
| 4편. Parca와 기존 APM / 모니터링 에이전트 비교– 무엇이 같고, 무엇이 다른가 (0) | 2025.12.18 |
| 3편. parca-agent 내부 구조 분석 – eBPF 기반 수집 메커니즘 (0) | 2025.12.18 |
| 2편. Parca 아키텍처 한눈에 보기 – Server, Agent, Storage 구조 (0) | 2025.12.18 |