본문으로 건너뛰기
Embedded Performance Engineering · 0/57

Embedded Performance Engineering — 임베디드 성능 엔지니어링 시리즈 소개

· Hawk · 8분 읽기

#이 시리즈를 쓰는 이유

“느려요.”

개발자가 가장 듣기 싫어하는 말 중 하나입니다. 특히 임베디드 시스템에서는 더욱 그렇습니다. 서버라면 인스턴스를 늘리면 되지만, 임베디드는 주어진 하드웨어 안에서 해결해야 합니다.

문제는 “느리다”는 증상만으로는 원인을 알 수 없다는 것입니다:

  • CPU가 바쁜 건가? I/O를 기다리는 건가?
  • Cache miss가 많은 건가? Branch misprediction인가?
  • Lock contention인가? False sharing인가?
  • 메모리 bandwidth가 부족한가? Bus가 포화 상태인가?

이 시리즈는 **“왜 느린가?”**에 답하는 방법을 다룹니다.

#왜 이 시리즈가 필요한가

성능 관련 서적은 많습니다. Brendan Gregg의 Systems Performance는 훌륭한 책입니다. 하지만:

  1. 서버/클라우드 중심: 대부분의 예제가 대규모 시스템
  2. Linux 가정: Bare-metal이나 RTOS는 다루지 않음
  3. 범용 도구 중심: 임베디드 특화 도구(ARM DS-5, Trace32, Lauterbach)는 없음

임베디드 성능 최적화에는 다른 접근이 필요합니다:

  • 메모리가 수 KB~GB 수준
  • CPU 코어가 1~8개
  • 전용 프로파일러가 없거나 제한적
  • 실시간 제약 조건 존재
  • 전력 소모 고려 필요

#대상 독자

  1. “느려요” 버그를 자주 받는 분

    • 어디서부터 봐야 할지 모르겠는 분
    • printf 찍어보는 것 외에 방법이 없는 분
  2. perf, ftrace를 들어봤지만 써본 적 없는 분

    • 도구는 알지만 실전 적용이 어려운 분
    • 출력 결과를 어떻게 해석해야 할지 모르는 분
  3. 하드웨어 성능 특성을 이해하고 싶은 분

    • Cache hierarchy, memory bandwidth
    • Pipeline, branch prediction
    • Bus architecture, DMA

#시리즈 구성

총 6개 Part, 53개 글로 구성됩니다.

성능 분석의 기초부터 마이크로아키텍처, 시스템 레벨, 병렬 처리, 도구 활용, 실전 사례까지 체계적으로 다룹니다.


#Part 1: Performance Analysis Fundamentals (8개)

성능 분석의 기본 개념과 방법론을 다룹니다.

#글 제목핵심 내용
1-01성능 분석 방법론측정 → 분석 → 최적화 사이클
1-02성능 지표 정의Latency, throughput, utilization
1-03측정의 기본wall-clock, CPU cycle, instruction
1-04통계적 분석평균, 분산, 백분위수, 히스토그램
1-05실시간 성능 분석WCET, jitter, deadline miss
1-06벤치마킹 기초재현성, 워밍업, 노이즈 제거
1-07성능 모델링Amdahl의 법칙, roofline model
1-08프로파일링 개요Sampling vs instrumentation

#Part 2: CPU & Microarchitecture (10개)

마이크로아키텍처 수준의 성능 분석을 다룹니다.

#글 제목핵심 내용
2-01CPU 파이프라인 기초Fetch, decode, execute, writeback
2-02Pipeline Stall 분석데이터 해저드, 구조적 해저드
2-03Branch Prediction예측기 구조, misprediction 비용
2-04Speculative ExecutionOut-of-order, 추측 실행
2-05Cache 기초L1/L2/L3, inclusive vs exclusive
2-06Cache Miss 분석Compulsory, capacity, conflict
2-07Cache Line 최적화정렬, 프리페치, 패딩
2-08Memory Bandwidth대역폭 측정, 병목 진단
2-09SIMD/NEON 최적화벡터화, intrinsics
2-10PMU와 하드웨어 카운터ARM PMU, RISC-V HPM

#Part 3: System Level Performance (11개)

시스템 수준의 병목을 분석합니다.

#글 제목핵심 내용
3-01Bus ArchitectureAHB, AXI, 버스 대역폭
3-02Bus ContentionArbitration, 우선순위, starvation
3-03DMA 성능 분석채널, 버스트, CPU overlap
3-04DMA vs CPU Copy언제 DMA가 유리한가
3-05Interrupt LatencyISR 진입 시간, tail-chaining
3-06Interrupt Storm원인 진단, rate limiting
3-07Memory-Mapped I/OMMIO 성능, 캐시 정책
3-08Peripheral Clock클럭 설정, 전력-성능 trade-off
3-09Power vs PerformanceDVFS, 저전력 모드 영향
3-10Thermal Throttling온도 모니터링, 성능 저하
3-11CXL·InterconnectCXL 2.0/3.1, Neoverse V2, AI 메모리 대역폭

#Part 4: Concurrency & Synchronization (10개)

병렬 처리와 동기화의 성능을 분석합니다.

#글 제목핵심 내용
4-01Concurrency 기초병렬성 vs 동시성
4-02False Sharing캐시라인 충돌, 패딩 해결
4-03Lock Contention 측정대기 시간, 경합률
4-04Spinlock 성능언제 spinlock이 유리한가
4-05Mutex 성능컨텍스트 스위치 비용
4-06Reader-Writer Lock읽기 우선, 쓰기 우선
4-07Lock-free 기초CAS, ABA 문제
4-08Memory OrderingAcquire-release, barrier
4-09Cache CoherencyMESI, 멀티코어 동기화
4-10SMP 성능 분석코어별 부하, affinity

#Part 5: Profiling Tools (10개)

도구별 실전 가이드를 제공합니다.

#글 제목핵심 내용
5-01perf 기초stat, record, report
5-02perf 고급이벤트, 필터, 스크립트
5-03ftrace 활용function tracer, latency tracer
5-04eBPF/bpftrace동적 추적, 커스텀 분석
5-05Flamegraph 분석CPU flamegraph, off-cpu
5-06ARM DS / Lauterbach임베디드 전용 도구
5-07Bare-metal 프로파일링GPIO, DWT, cycle counter
5-08Nsight SystemsGPU/NPU 포함 시스템
5-09Tracy·Hotspot·uftrace저오버헤드 모던 프로파일러
5-10Parca·Pixie·CiliumeBPF 연속 프로파일링

#Part 6: Real-World Case Studies (4개)

실전 사례를 통해 분석 과정을 보여줍니다.

#글 제목핵심 내용
6-01사례: ISR Latency 문제원인 추적, 해결 과정
6-02사례: Cache Thrashing메모리 레이아웃 최적화
6-03사례: Lock Contention동기화 구조 개선
6-04사례: DMA 성능 튜닝버스 최적화

#학습 로드맵

  • 성능 분석 입문자 — Part 1 (기초) → Part 2 (CPU) → Part 5 (도구)
  • 마이크로아키텍처 최적화 — Part 2 (CPU) → Part 3 (시스템) → Part 6 (사례)
  • 멀티코어/동시성 — Part 4 (동시성) → Part 3-09/10 → Part 6 (사례)

#핵심 원칙

#측정 없이 최적화하지 않는다

“왠지 여기일 것 같다”는 감으로 코드를 바꾸지 않습니다.

#평균값만 보지 않는다

실시간 시스템에서는 p99, max, jitter가 더 중요합니다.

#CPU 사용률만 보지 않는다

병목은 memory, bus, lock, interrupt일 수 있습니다.

#관측 → 가설 → 검증

항상 관측 지표 → 원인 후보 → 검증 실험 순서로 진행합니다.

#무엇을 측정할 것인가

지표의미측정 방법
wall-clock latency실제 경과 시간타이머, GPIO toggle
CPU cycle명령어 실행 시간DWT, PMU
instruction count실행된 명령어 수PMU
cache miss캐시 적중 실패PMU counter
branch miss분기 예측 실패PMU counter
IRQ frequency인터럽트 빈도카운터
lock wait time락 대기 시간instrumentation
memory bandwidth메모리 대역폭PMU, 벤치마크

#사전 지식

  • C 프로그래밍
  • 컴퓨터 구조 기초 (CPU, 메모리, 캐시)
  • Linux 기초 (선택사항)
  • 어셈블리 기초 (선택사항)

#레퍼런스

서적

  • Systems Performance (2nd ed) - Brendan Gregg
  • Computer Architecture: A Quantitative Approach (6th ed) - Hennessy & Patterson
  • What Every Programmer Should Know About Memory - Ulrich Drepper
  • Performance Analysis and Tuning on Modern CPUs - Denis Bakhvalov

도구

블로그

임베디드 특화

  • ARM PMU: Performance Monitoring Unit
  • Lauterbach Trace32: 하드웨어 트레이스
  • SEGGER SystemView: RTOS 분석
  • Nsight Systems: NVIDIA edge AI

#이 시리즈의 목표

이 시리즈를 완주하면:

  • “느리다”를 숫자로 정의할 수 있다
  • 병목을 분류할 수 있다 (CPU, 메모리, 버스, 동기화)
  • 가설을 세우고 검증할 수 있다
  • 도구를 선택하고 해석할 수 있다
  • 최적화 trade-off를 설명할 수 있다
  • 실시간 성능 요구사항을 분석할 수 있다

다음 글: Part 1-01: 성능 분석 방법론

Embedded Performance Engineering · 1 of 57

  1. 1Embedded Performance Engineering — 임베디드 성능 엔지니어링 시리즈 소개
  2. 2임베디드 성능 분석 방법론 — Measure → Analyze → Optimize 사이클
  3. 3성능 지표 정의 — Latency·Throughput·Utilization 분석
  4. 4성능 측정의 기본 — Wall-Clock·CPU Cycle·Instruction Count
  5. 5성능 데이터 통계적 분석 — Percentile·Histogram·평균의 함정
  6. 6실시간 성능 분석 — WCET·Jitter·Deadline Miss 측정
  7. 7임베디드 벤치마킹 기초 — 재현성·Warmup·노이즈 제거
  8. 8성능 모델링 — Amdahl·Gustafson·Roofline Model 적용
  9. 9프로파일링 기법 개요 — Sampling vs Instrumentation·PGO·LTO
  10. 10CPU 파이프라인 분석 — 5-stage·Cortex-M·Cortex-A 비교
  11. 11Pipeline Stall 분석 — Data·Structural·Control Hazard·Forwarding
  12. 12Branch Prediction 분석 — Static·2-bit·BTB·BHT·Mispredict 비용
  13. 13Speculative Execution 분석 — OoO·Reorder Buffer·Register Renaming
  14. 14CPU Cache 기초 — L1·L2·L3·Set Associative·Replacement Policy
  15. 15Cache Miss 3C Model 분석 — Compulsory·Capacity·Conflict
  16. 16Cache Line 최적화 — Alignment·Prefetch·False Sharing 처리
  17. 17메모리 대역폭 분석 — STREAM·Roofline·Bus Saturation 측정
  18. 18SIMD·NEON 활용 — 128-bit Vector·Auto-Vectorization·SVE/SVE2
  19. 19PMU·HPM 하드웨어 카운터 분석 — 정밀 성능 진단
  20. 20임베디드 Bus Architecture — AHB·AXI·CHI 진화와 5-Channel
  21. 21Bus Contention 진단 — Arbitration·QoS·Starvation 측정
  22. 22DMA 성능 최적화 — Burst·Scatter-Gather·Chain·Cache 일관성
  23. 23DMA vs CPU Copy 성능 비교 — Break-even·Setup Overhead 실측
  24. 24Interrupt Latency 분석 — 진입·종료·Tail-Chaining·Late Arrival
  25. 25Interrupt Storm 처리 — NAPI·Rate-Limit·Polling 전환
  26. 26MMIO 접근 성능 — Cache Policy·Write-Combining·Volatile·Barrier
  27. 27Peripheral Clock 분석 — PLL·Divider·Gating·DVFS
  28. 28Power vs Performance 트레이드오프 — DVFS·Race-to-Idle·Big.LITTLE
  29. 29Thermal Throttling 분석 — Junction Temp·Trip Point·냉각
  30. 30CXL Interconnect 분석 — AI 시대 메모리 대역폭 확장
  31. 31Concurrency 기초 — Concurrency vs Parallelism·Race·Memory Model
  32. 32False Sharing 진단 — Cache Line Ping-Pong·Padding·측정
  33. 33Lock Contention 분석 — Wait·Hold·Convoy·측정 기법
  34. 34Spinlock 성능 분석 — Spin-Wait vs Context Switch·Ticket·MCS
  35. 35Mutex 성능 분석 — Futex·Adaptive·Priority Inheritance
  36. 36Reader-Writer Lock 성능 — Reader/Writer Priority·RCU·Seqlock
  37. 37Lock-Free 자료구조 성능 — CAS·ABA·Hazard Pointer·Epoch Reclamation
  38. 38Memory Ordering 분석 — Acquire·Release·Seq-Cst·ARM Relaxed Model
  39. 39Cache Coherency 프로토콜 — MESI·MOESI·Snoop·Directory
  40. 40SMP 성능 분석 — Per-Core·Affinity·Load Balance·Scalability
  41. 41Linux perf 기초 — stat·record·report 활용
  42. 42Linux perf 고급 — Raw Event·Tracepoint·perf script
  43. 43ftrace 활용 — function·function_graph·latency tracer
  44. 44eBPF·bpftrace 동적 트레이싱 — 커널 무수정 관측
  45. 45Flamegraph 분석 — On-CPU·Off-CPU·Differential
  46. 46ARM DS·Lauterbach 분석 — Hardware Trace 전문 도구
  47. 47Bare-metal 프로파일링 — GPIO·DWT·SysTick·ITM 활용
  48. 48NVIDIA Nsight Systems — GPU·NPU 포함 시스템 분석
  49. 49모던 프로파일러 비교 — Tracy·Hotspot·uftrace·Coz
  50. 50연속 프로파일링 — Parca·Pixie·Pyroscope·Tetragon
  51. 51실전 사례 — ISR Latency 100µs Deadline Miss 추적
  52. 52실전 사례 — Matrix Multiply가 예상의 10배 느린 이유
  53. 53실전 사례 — 8-core가 4-core를 넘으면 throughput이 떨어지는 이유
  54. 54실전 사례 — 카메라 1080p 60fps가 30fps로 떨어지는 이유
  55. 55CXL.mem 지연·대역폭 실측 — Direct·Switch·Pooled 토폴로지 비교
  56. 56CXL 성능 프로파일링 도구 — cxl-cli·DAMON·perf-mem 활용
  57. 57실전 사례 — CXL.mem 추가로 LLM inference KV cache 처리량 회복