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

CXL.mem 지연·대역폭 실측 — Direct·Switch·Pooled 토폴로지 비교

· Hawk · 5분 읽기

#한 줄 요약

“CXL.mem의 지연은 디바이스 설계에 크게 좌우됩니다.” 실제 CXL 메모리 디바이스 3종을 잰 연구(Sun et al., MICRO 2023)에서 load 지연이 원격 소켓 DDR5의 1.35배부터 약 3배까지 갈렸습니다. 내 시스템의 값은 mlc·STREAM으로 직접 재야 합니다.

#어떤 문제를 푸는가

Ch 29에서 CXL 프로토콜 세 가지와 디바이스 타입을 봤습니다. 그러나 실제로 데이터센터에 배치할 때는 어느 토폴로지가 어떤 성능을 내는지가 결정의 핵심입니다.

CXL.mem은 DDR DIMM이 아닌 새 메모리 tier입니다. 그렇다면 지연·대역폭이 워크로드에 미치는 영향을 수치로 알아야 합니다. 측정값 없이 “CXL.mem이 쓸 만하다/없다”는 서로 다른 토폴로지를 같은 잣대로 평가하는 흔한 오류입니다.

이 장은 세 가지 대표 토폴로지의 구조, 공개된 실측 결과, 그리고 측정 방법을 정리합니다.

#세 가지 토폴로지

CXL.mem 배치 형태는 세 단계로 나뉩니다.

토폴로지구성대표 사례
1. Direct Attach (CXL 1.1/2.0)Host CPU → CXL link → CXL Type 3 Memory DeviceSamsung CMM-D
2. Single Switch (CXL 2.0 pooling)Host CPU → CXL link → CXL Switch → Memory Device A·B·CTBD
3. Multi-Host Pool (CXL 2.0 multi-LD / 3.0 fabric)Host A·B·C → CXL Switch → Memory Device (Multi-Logical Device, 각 Host에 logical slice)TBD

각 토폴로지마다 flit이 지나가는 단계 수가 다르고, 그게 지연에 직접 반영됩니다.

#공개된 실측 — 실제 CXL 디바이스 3종

Sun et al.(MICRO 2023)은 Intel Sapphire Rapids 서버에 실제 CXL 메모리 디바이스 3종(CXL-A·B·C, ASIC 기반 hard IP와 FPGA 기반 soft IP)을 붙이고 Intel MLC와 자체 마이크로벤치마크로 쟀습니다. 비교 기준은 원격 NUMA 노드의 DDR5(DDR5-R)입니다.

디바이스load(ld) 지연, DDR5-R 대비
CXL-A약 1.35배 (35% 더 김)
CXL-B약 2배
CXL-C약 3배

논문의 결론은 CXL 메모리 지연이 CXL 컨트롤러 설계에 크게 좌우된다는 것입니다. 같은 DDR4를 써도 CXL-C(DDR4-3200)가 CXL-B(DDR4-2400)보다 ld 지연이 67% 길었습니다. 이 측정은 direct attach 디바이스 기준이고, switch·pool 토폴로지의 실측은 이 글의 자료에 없습니다(TBD).

#측정 방법 — mlc

Intel mlc는 NUMA-aware 메모리 벤치마크로, 3.0부터 CPU 없는 메모리 전용 NUMA 노드를 지원합니다. CXL.mem이 NUMA 노드로 등록된 환경에서 그대로 쓸 수 있습니다.

Terminal window
# 1. CXL 노드 확인 (CPU 없는 노드)
$ numactl --hardware
# 2. 노드 간 idle 지연 행렬
$ ./mlc --latency_matrix
# 3. 부하를 올려 가며 지연·대역폭
$ ./mlc --loaded_latency
# 4. 노드 간 대역폭 행렬
$ ./mlc --bandwidth_matrix

출력 형식과 옵션은 Intel MLC 문서에 있습니다. 숫자는 플랫폼·디바이스마다 다르므로 직접 잰 값으로 판단합니다.

#STREAM으로 본 sustained bandwidth

Terminal window
$ OMP_NUM_THREADS=16 numactl --cpunodebind=0 --membind=2 ./stream

--membind로 CXL 노드(여기서는 node 2)에만 할당해 Copy·Scale·Add·Triad 처리량을 잽니다. 같은 명령을 local 노드에 돌린 결과와 비교하면 CXL tier의 대역폭 비율이 나옵니다.

#DAMON으로 본 access 패턴

DAMON(Data Access Monitor)은 메모리 region 단위로 access 빈도를 측정합니다. CXL.mem tiered 환경에서 cold region을 식별해 promotion/demotion 결정을 돕습니다.

Terminal window
# 1. DAMON 설정 후 시작 (sysfs, 대상 지정은 커널 문서 참조)
$ echo on > /sys/kernel/mm/damon/admin/kdamonds/0/state
# 2. 결과 — region별 access 분포
$ damo report access

hot/cold 비율은 워크로드마다 다르므로, 이 분포를 직접 보고 CXL.mem tier에 cold 데이터를 둘지 판단합니다.

#토폴로지 선택

결정 변수는 지연 budget과 용량입니다. 위 실측처럼 같은 direct attach라도 디바이스에 따라 지연이 원격 소켓 DDR5의 1.35배~3배로 갈리므로, 토폴로지보다 먼저 실제 디바이스의 지연을 mlc로 재고 워크로드의 지연 budget과 비교합니다.

#자주 보는 함정과 안티패턴

⚠️ PCIe 5.0 x16의 64 GB/s를 그대로 가정

링크 원시 전송률(32 GT/s × 16 ÷ 8)은 이론 상한입니다. 프로토콜 오버헤드와 디바이스 구현이 실효 대역폭을 정하므로 STREAM·mlc로 잰 값으로 모델을 세웁니다.

⚠️ “CXL 메모리 지연은 하나의 값”

Sun et al.의 세 디바이스는 같은 시스템에서 1.35배~약 3배로 갈렸습니다. 다른 디바이스의 수치를 가져다 쓰지 않고, 쓸 디바이스를 직접 잽니다.

#정리

  • CXL.mem 지연은 디바이스 설계에 강하게 의존합니다 — 실제 디바이스 3종이 원격 소켓 DDR5의 1.35배~약 3배(Sun et al., MICRO 2023).
  • switch·pool 토폴로지의 실측은 이 글의 자료에 없습니다.
  • mlc·STREAM·DAMON이 지연·sustained throughput·access pattern을 각각 재는 도구입니다.
  • 토폴로지 선택은 직접 잰 지연과 워크로드의 지연 budget으로 합니다.

다음 편은 Ch 55: CXL 성능 프로파일링 도구 — cxl-cli·DAMON·perf-mem로 측정 환경 자체를 구축하는 법을 정리합니다.

#관련 항목

Embedded Performance Engineering · 55 of 57

  1. 1 Embedded 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. 10 CPU 파이프라인 분석 — 5-stage·Cortex-M·Cortex-A 비교
  11. 11 Pipeline Stall 분석 — Data·Structural·Control Hazard·Forwarding
  12. 12 Branch Prediction 분석 — Static·2-bit·BTB·BHT·Mispredict 비용
  13. 13 Speculative Execution 분석 — OoO·Reorder Buffer·Register Renaming
  14. 14 CPU Cache 기초 — L1·L2·L3·Set Associative·Replacement Policy
  15. 15 Cache Miss 3C Model 분석 — Compulsory·Capacity·Conflict
  16. 16 Cache Line 최적화 — Alignment·Prefetch·False Sharing 처리
  17. 17 메모리 대역폭 분석 — STREAM·Roofline·Bus Saturation 측정
  18. 18 SIMD·NEON 활용 — 128-bit Vector·Auto-Vectorization·SVE/SVE2
  19. 19 PMU·HPM 하드웨어 카운터 분석 — 정밀 성능 진단
  20. 20 임베디드 Bus Architecture — AHB·AXI·CHI 진화와 5-Channel
  21. 21 Bus Contention 진단 — Arbitration·QoS·Starvation 측정
  22. 22 DMA 성능 최적화 — Burst·Scatter-Gather·Chain·Cache 일관성
  23. 23 DMA vs CPU Copy 성능 비교 — Break-even·Setup Overhead 실측
  24. 24 Interrupt Latency 분석 — 진입·종료·Tail-Chaining·Late Arrival
  25. 25 Interrupt Storm 처리 — NAPI·Rate-Limit·Polling 전환
  26. 26 MMIO 접근 성능 — Cache Policy·Write-Combining·Volatile·Barrier
  27. 27 Peripheral Clock 분석 — PLL·Divider·Gating·DVFS
  28. 28 Power vs Performance 트레이드오프 — DVFS·Race-to-Idle·Big.LITTLE
  29. 29 Thermal Throttling 분석 — Junction Temp·Trip Point·냉각
  30. 30 CXL Interconnect 분석 — AI 시대 메모리 대역폭 확장
  31. 31 Concurrency 기초 — Concurrency vs Parallelism·Race·Memory Model
  32. 32 False Sharing 진단 — Cache Line Ping-Pong·Padding·측정
  33. 33 Lock Contention 분석 — Wait·Hold·Convoy·측정 기법
  34. 34 Spinlock 성능 분석 — Spin-Wait vs Context Switch·Ticket·MCS
  35. 35 Mutex 성능 분석 — Futex·Adaptive·Priority Inheritance
  36. 36 Reader-Writer Lock 성능 — Reader/Writer Priority·RCU·Seqlock
  37. 37 Lock-Free 자료구조 성능 — CAS·ABA·Hazard Pointer·Epoch Reclamation
  38. 38 Memory Ordering 분석 — Acquire·Release·Seq-Cst·ARM Relaxed Model
  39. 39 Cache Coherency 프로토콜 — MESI·MOESI·Snoop·Directory
  40. 40 SMP 성능 분석 — Per-Core·Affinity·Load Balance·Scalability
  41. 41 Linux perf 기초 — stat·record·report 활용
  42. 42 Linux perf 고급 — Raw Event·Tracepoint·perf script
  43. 43 ftrace 활용 — function·function_graph·latency tracer
  44. 44 eBPF·bpftrace 동적 트레이싱 — 커널 무수정 관측
  45. 45 Flamegraph 분석 — On-CPU·Off-CPU·Differential
  46. 46 ARM DS·Lauterbach 분석 — Hardware Trace 전문 도구
  47. 47 Bare-metal 프로파일링 — GPIO·DWT·SysTick·ITM 활용
  48. 48 NVIDIA 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. 55 CXL.mem 지연·대역폭 실측 — Direct·Switch·Pooled 토폴로지 비교
  56. 56 CXL 성능 프로파일링 도구 — cxl-cli·DAMON·perf-mem 활용
  57. 57 실전 사례 — CXL.mem 추가로 LLM inference KV cache 처리량 회복