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 MB | 1 MB | 1 |
| 1 MB | 2.5 MB | 2.5 |
| 1 MB | 5 MB | 5 |
추가 쓰기는 [[Garbage-Collection|GC]] 때문에 발생.
왜 WAF가 생기는가
[[NAND-Flash-기초|NAND]]는 erase가 block 단위 → 살아있는 페이지를 다른 곳으로 옮긴 뒤 erase 가능 → 유효 데이터 복사가 추가 쓰기로 카운트.
[[NVMe-FDP|FDP]]가 이를 푸는 방식: lifetime이 같은 데이터를 같은 RU에 모아 GC 시 복사할 게 없게 만든다.
WAF가 성능에 미치는 영향 (FMS2023)
| WAF | Random Write 성능 |
|---|---|
| 1 | Sequential과 동일 |
| 5 | Sequential의 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인 이유