본문으로 건너뛰기

WAF — Write Amplification Factor

[!tldr] 업무 관점 takeaway 우리 미션의 가장 정량적인 KPI. WAF = SSD가 실제로 쓴 양 / Host가 쓰라고 한 양. 이상값 1. WAF 5가 되면 random write 성능이 sequential 대비 20% 수준으로 떨어진다. KV Cache 워크로드는 random write + lifetime 불균일 + 높은 SSD utilization 3박자가 맞아 WAF 3.x로 치솟는 것이 [[CacheLib-FDP-사례|Meta CacheLib 사례]]에서 확인됨. [[NVMe-FDP|FDP]]로 ~1.0까지 끌어내리는 것이 우리 핵심 가설.


정의

WAF = (SSD가 NAND에 실제로 쓴 데이터량) / (Host가 SSD에 쓰라고 요청한 데이터량)

이상값: WAF = 1
일반: WAF = 1.x ~ 3.x
나쁨: WAF = 5+
Host 요청SSD 실제 쓰기WAF
1 MB1 MB1
1 MB2.5 MB2.5
1 MB5 MB5

추가 쓰기는 [[Garbage-Collection|GC]] 때문에 발생.


왜 WAF가 생기는가

[[NAND-Flash-기초|NAND]]는 erase가 block 단위 → 살아있는 페이지를 다른 곳으로 옮긴 뒤 erase 가능 → 유효 데이터 복사가 추가 쓰기로 카운트.

[[NVMe-FDP|FDP]]가 이를 푸는 방식: lifetime이 같은 데이터를 같은 RU에 모아 GC 시 복사할 게 없게 만든다.


WAF가 성능에 미치는 영향 (FMS2023)

WAFRandom Write 성능
1Sequential과 동일
5Sequential의 20%

→ WAF가 높을수록 SSD가 훨씬 더 일하면서 더 느려진다. → p99 write latency도 같이 튄다 → [[TTFT-ITL|TTFT]] 안정성에 직접 영향.


KV Cache 워크로드에서 WAF가 높은 3가지 이유

① Random Write 패턴

t=1: Query A KV (128KB) → LBA 어딘가
t=2: Query B KV (512KB) → LBA 다른 곳
t=3: Query A 종료 → KV-A 무효
t=4: Query C KV (256KB) → 또 다른 LBA
t=5: Query B 종료 → KV-B 무효

Superblock 내부에 구멍이 뚫림 → GC 시 살아있는 페이지 복사 발생. 삭제 타이밍이 제각각이라 생기는 문제.

② Lifetime 불균일

Prefix Cache (long)
Single-query KV (short)
중간 컨텍스트 (medium)

이것들이 한 Superblock에 섞이면 → 짧은 게 지워질 때 긴 게 복사됨.

③ 높은 SSD utilization

LMCache는 SSD 공간 최대 활용 → utilization 95%+ → 빈 Superblock 거의 없음 → GC 빈도 ↑.

SSD 50% 사용 → 빈 superblock 많음 → GC 적음 → WAF 낮음
SSD 95% 사용 → 빈 superblock 거의 없음 → GC 빈번 → WAF 급증

FDP의 효과

원인FDP가 해결어떻게
Random Write부분적write 패턴 자체는 못 바꿈. 단 같은 수명끼리 모으면 구멍이 동시에 생겨 복사량 ↓
Lifetime 불균일직접 해결RUH로 수명별 분리 → GC 시 복사 최소화
높은 utilization간접 해결 ✅WAF↓로 같은 공간 더 많이 쓸 수 있어 utilization 관리 쉬워짐

[[CacheLib-FDP-사례]]: SSD 100% 사용률에서 WAF 3.5 → ~1.0.


측정 방법

# FDP namespace의 WAF 측정
nvme fdp stats /dev/nvme0 -e 1 | \
awk '/(HBMW)/{hbmw=$7} /(MBMW)/{mbmw=$7}
END {print "Device WAF = " mbmw/hbmw}'
# → Device WAF = 2.19

용어:

  • HBMW: Host-Block Media Write
  • MBMW: Media-Block Media Write (NAND 실제 쓴 양)

의외의 연결

[!note] WAF 가설 = FDP 효과 가설 = TTFT 가설 세 가설이 한 인과 사슬에 있다:

FDP applied → WAF ↓ → p99 write latency ↓ → LMCache throughput ↑ → warm TTFT ↓

어떤 단계에서 사슬이 끊기는지 측정하는 게 [[단기-Task-목록|Task 1: L2 latency histogram]]의 목적.


관련 페이지

  • [[NAND-Flash-기초]] — WAF의 물리적 원인
  • [[Garbage-Collection]] — WAF의 직접 메커니즘
  • [[NVMe-FDP]] — WAF를 푸는 기술
  • [[CacheLib-FDP-사례]] — WAF 3.5→1.0 실측 사례
  • [[HC-SSD]] — WAF 민감도가 더 큰 미디어
  • [[TTFT-ITL]] — WAF 인과 사슬의 끝
  • [[Mission]] — WAF가 KPI인 이유