SSD random read
꼬리 지연 개선

latency breakdown 에서 스케줄링 정책까지

[이름] · [소속] · [날짜]  사내에서 채움

발표 8분 + 질문 2분 · 본문 12장 (과제 소개 · 요구사항 분석 · 개발 및 설계 · 검증 및 목표 결과 · 기대효과) + 부록 3장 · 예시 값은 사내 데이터로 교체

발표자 노트 · 10초

SSD random read 꼬리 지연 개선, latency breakdown 에서 스케줄링 정책까지. 발표하겠습니다.

1 / 12과제 소개 — 한 장 요약

Random read 꼬리 지연은 세 가지 대기 시간의 합이다. 겹침을 피하도록 스케줄링하면 P99.99 가 내려가고, 효과 있는 제품군은 미리 가릴 수 있다.

1
문제

전력 절감용 bank 묶음 처리가 일부 read 를 지연시켜 P99.99 가 튄다

2
접근

시뮬레이터에 지표를 추가해 지연을 ① plane · ② channel · ③ 그 외로 분해

3
결과

겹침 회피 스케줄링으로 P99 / P99.99 개선. 전력 절감 없이도 효과

4
의미

효과 조건과 임계값이 정해져 제품군별 선별 적용이 가능

배경 → 2장 · 결과 → 8장
발표자 노트 · 30초

결론부터 말씀드리면, random read 꼬리 지연은 세 가지 대기 시간의 합이고, 그중 겹침을 피하도록 스케줄링하면 P99.99 가 내려갑니다. 출발은 전력 절감 정책의 부작용 수습이었는데, 결과적으로 전력 절감을 안 해도 효과가 있었고, 어떤 제품군에 효과가 있는지 판별 기준까지 얻었습니다.

2 / 12과제 소개 — 배경 · 문제 정의 · 범위

전력을 아끼려 같은 bank 의 read 를 모았더니, 일부 read 가 기다리며 P99.99 가 튀었다

read 발행 순서 — bank 0 / bank 1 로 번갈아 도착하는 random read 도착순 처리 (base) B0 · r1 B1 · r2 B0 · r3 B1 · r4 B0 · r5 B1 · r6 bank 전환 5회전력 ↑ · 지연 균일 bank 묶음 처리 (전력 절감 정책) B0 · r1 B0 · r3 B0 · r5 B1 · r2 B1 · r4 B1 · r6 bank 전환 1회전력 ↓ · r2 대기 r2 는 두 번째로 왔는데 네 번째로 나간다 — 묶음이 끝날 때까지 대기 시간 묶음 처리의 효과 전력 P50= P99.99↑↑ host 가 보는 품질은 꼬리다. 이 스파이크가 전력 절감 채택을 막는다
범위 안host random read · SSD 시뮬레이터 · 제품군 3종 · 산출물 = 계측 지표 + 스케줄링 정책 + 제품군 선별 기준
범위 밖쓰기 혼합 워크로드 · 실제 펌웨어 구현 (11장 개선 계획)
적용 과목 · 컴퓨터구조 (Power Wall · perf/TCO) · 논리설계 (Low Power) · 디지털집적회로 (전력 vs 지연)교육 ↔ 업무 간극 → 부록 A3
발표자 노트 · 50초

배경입니다. 전력을 아끼려고 같은 bank 로 가는 read 를 모아 한 번에 처리하는 정책이 있었습니다. 전력은 줄었는데, 모으는 동안 먼저 온 다른 bank 의 read 가 기다리게 됐고, 평균은 그대로인데 P99.99 만 튀었습니다. host 가 보는 품질은 평균이 아니라 꼬리라서, 이 스파이크 하나가 전력 절감 채택을 막습니다.

그래서 과제 범위를 이렇게 잡았습니다. 대상은 host random read, 환경은 SSD 시뮬레이터, 제품군 세 종. 산출물은 계측 지표, 스케줄링 정책, 제품군 선별 기준 세 가지입니다.

3 / 12요구사항 분석 — 문제점 → 기능 요구사항

"어디서 기다리는지"를 재는 지표가 없어서, 계측이 첫 요구사항이 됐다

문제점

P1평균(P50)은 정상인데 P99.99 만 튄다. 기존 지표로는 어디서 기다리는지 안 보인다
P2전력 절감(묶음 처리)이 어느 read 를 얼마나 지연시키는지 모른다
P3발행 순서를 바꾸는 정책을 넣으면 다른 read 가 굶을 수 있다

기능 요구사항

R1read 한 건의 지연을 성분별로 계측한다 (① plane · ② channel · ③ 그 외) ← P1 · P2
R2겹침이 예상되는 read 를 피해 준비된 다른 read 를 먼저 발행한다 ← P2
R3양보에 한도(임계값)를 두어 굶김을 막는다 ← P3
R4전력 절감 정책과 함께 동작한다 ← P2
R5제품군별 적용 여부를 판별할 기준을 낸다 ← P1
적용 과목 · 운영체제기초 (스케줄링 지표: waiting time) · 시스템프로그래밍 (starvation)R1 → 4·5장 · R2·R3 → 6장 · R4 → 8장 · R5 → 8·9장
발표자 노트 · 50초

문제를 셋으로 정리했습니다. 첫째, 평균은 정상인데 꼬리만 튄다. 둘째, 전력 절감이 어느 read 를 얼마나 지연시키는지 모른다. 셋째, 정책을 넣으면 다른 read 가 굶을 수 있다.

여기서 요구사항 다섯을 뽑았습니다. read 한 건의 지연을 성분별로 계측할 것, 겹침이 예상되는 read 를 피해 발행할 것, 양보에 한도를 둘 것, 전력 절감과 함께 동작할 것, 제품군별 적용 여부를 판별할 것. 첫 번째 계측이 나머지의 전제입니다. 어디서 기다리는지 모르면 정책도 판별도 못 합니다.

4 / 12개발 및 설계 — 검토 ①

read 한 건은 큐 → 스케줄러 → channel → plane 을 지나고, 기다림은 세 곳에서 생긴다

Host 큐 read → P0read → P3read → P0 read → P5read → P1 스케줄러 발행 순서 결정 · 정책 이 과제가 정책을 바꾼 곳 Channel 0 한 번에 하나만 전송 Channel 1 한 번에 하나만 전송 Plane 0 Plane 1 Plane 2 Plane 3 Plane 4 Plane 5 plane 하나는 한 번에 한 read ③ 그 외 큐 대기 ①② 가 아닌 이유로 기다림 ② 같은 channel 중첩 plane 은 비었는데 channel 이 바쁨 ① 같은 plane 중첩 앞 read 가 같은 plane 을 씀 계측 지표 read 마다 ①②③ 시간을 따로 기록 이 과제가 시뮬레이터에 추가한 것
적용 과목 · 디지털집적회로 (NAND 셀·스트링 동작) · 운영체제기초 (Flash 특성 · 블록 디바이스 I/O 큐) · 컴퓨터구조 (banking)계측 지점 → 6장
발표자 노트 · 40초

read 한 건의 경로입니다. 호스트 큐에서 스케줄러를 거쳐 채널로, 채널 안의 plane 으로 갑니다. 기다림은 세 곳에서 생깁니다. 같은 plane 이 바쁘면 ①, plane 은 비었는데 채널이 바쁘면 ②, 그 밖의 큐 대기가 ③입니다. 시뮬레이터에 이 세 구간을 재는 지표를 넣었습니다.

5 / 12개발 및 설계 — 검토 ② 문제 분석

중앙값은 큐 대기가 만들지만, P99.99 는 겹침(①②)이 만든다

① 같은 plane 중첩 ② 같은 channel 중첩 ③ 그 외 큐 대기 막대 길이 = 지연 (상대값) · 숫자 = 비중 % P50 75 ×1 P99 35 25 40 ×2.8 P99.99 50 30 20 ×4.7 꼬리로 갈수록 겹침(①②) 몫이 커진다 → 표적은 겹침
적용 과목 · 컴퓨터구조 (Response vs Throughput · Little's Law · Amdahl) · 운영체제기초 (waiting time)예시 값 · Family-A · 사내 데이터로 교체 측정 조건 → 부록 A2
발표자 노트 · 40초

계측 결과입니다. 중앙값에서는 ③ 큐 대기가 대부분인데, 꼬리로 갈수록 ①② 겹침이 커지고 P99.99 에서는 겹침이 대부분입니다. 꼬리 지연은 운 나쁘게 같은 곳으로 몰린 read 가 만듭니다. 그래서 표적은 큐 길이가 아니라 겹침입니다.

6 / 12개발 및 설계 — 상세 설계

네 시각을 찍어 ①②③을 얻고, 겹침이 예상되면 임계값까지만 양보한다

계측 — read 한 건의 네 시각 t0 도착 t1 plane 빔 t2 channel 빔 t3 발행 ① = t1 − t0 (같은 plane 중첩) ② = t2 − t1 (같은 channel 중첩) ③ = t3 − t2 (그 외) plane 이 이미 비어 있으면 t1 = t0 → ① = 0. 같은 식으로 ② 도 0 이 될 수 있다. 정책 — 발행 후보를 고를 때 큐 맨 앞 read plane / channel겹침 예상? 누적 양보< 임계값? 양보준비된 다른 read 먼저 아니오 아니오 발행겹침이 없거나 한도 초과 임계값: 지금은 제품별 스윕으로 정함. 내부 지표(예: 겹침 비중, 큐 깊이)로 계산하는 수식이 다음 과제.
적용 과목 · 컴파일러 (List Scheduling: READY 집합 · 자원 제약 · 우선순위) · 운영체제기초 (convoy · SSTF 굶김 vs SCAN) · 컴퓨터구조 (structural hazard · OoO)대안 비교 → 부록 A1
발표자 노트 · 50초

설계입니다. read 마다 도착, plane 이 비는 시각, 채널이 비는 시각, 발행 시각을 찍으면 그 차이가 ①②③입니다. 정책은 큐 맨 앞 read 가 겹침이 예상되면 준비된 다른 read 를 먼저 보내고, 누적 양보가 임계값을 넘으면 그냥 발행해 굶김을 막습니다. 도착순 유지, 정적 우선순위와 비교해 이 방식을 골랐고, 비교는 부록에 있습니다.

7 / 12검증 — 방법론 · 평가 방법

제품군 3종 × 구성 4종을 같은 워크로드로 돌려 P50 / P99 / P99.99 를 base 대비 비교했다

실험 매트릭스 — 같은 워크로드 · 같은 시뮬레이터

base전력 절감base + 정책전력 절감 + 정책
Family-A
Family-B
Family-C

3 제품군 × 4 구성 = 12 셀. 제품군은 plane · channel 수 등 병렬 구조가 다른 것으로 고른다

평가 방법

P
지표P50 · P99 · P99.99. 본문은 base = 1.00 상대값, 절대값은 사내 자료
성분 비중percentile 별 ①②③ 비중 — 결과 해석과 선별 기준의 근거

신뢰성 조치

×N
반복같은 조건을 시드만 바꿔 N 회, 변동폭이 개선폭보다 작음을 확인 사내 확인
임계값 스윕제품군별로 임계값을 바꿔 가며 P99.99 최소점을 찾음 (부록 A2)
적용 과목 · 논리설계 (Verification: spec coverage · directed/random test) · 컴퓨터구조 (Amdahl)조건 상세 → 부록 A2
발표자 노트 · 30초

검증은 제품군 세 종에 대해 base, 전력 절감, base 에 정책, 전력 절감에 정책, 네 구성을 같은 워크로드로 돌려 P50, P99, P99.99 를 base 대비 상대값으로 비교했습니다. 같은 조건을 반복해 변동폭을 확인했고 임계값은 스윕으로 정했습니다.

8 / 12검증 — 성능 결과 · 신뢰성

효과 있는 제품군은 전력 절감을 켜고도 base 보다 낮아졌고, 없는 제품군은 이유가 보인다

정책 — Plane 0 으로 몰린 read 두 건 도착순 (기존) read A → P0 B 대기 (① 겹침) read B → P0 read C → P3 는 B 뒤에서 기다림 겹침 회피 (새 정책) read A → P0 read C → P3 먼저 read B → P0 시간 양보에는 한도가 있다 — 임계값 겹침이 풀릴 때까지만 양보. 누적 대기가 임계값을 넘으면 그냥 발행 (굶김 방지) 결과 — P99.99, base = 1.00 (낮을수록 좋음) 1.00 1.00 base 1.35 전력 절감 0.72 base + 새 정책 0.85 전력 절감 + 새 정책 전력 절감이 올린 것을 정책이 base 아래로

제품군별 P99.99 — base = 1.00

base전력
절감
base
+ 정책
전력 절감
+ 정책
Family-A1.001.350.720.85
Family-B1.001.280.800.92
Family-C1.001.200.981.12

Family-C 는 효과 없음. P99.99 에서도 ③ 큐 대기가 커서 겹침 회피의 표적이 없다 — 효과가 없는 이유가 같은 원리로 설명된다

신뢰성: 반복 변동폭 < 개선폭 사내 확인 · 조건 상세는 부록 A2

적용 과목 · 컴퓨터구조 (Amdahl: 어느 성분을 줄여야 전체가 움직이나)예시 값 · 사내 데이터로 교체 대안 → A1 · 조건 → A2
발표자 노트 · 50초

결과입니다. 효과가 있는 제품군에서는 전력 절감이 올린 P99.99 를 정책이 base 아래로 내렸고, 전력 절감 없이 base 에 얹어도 내려갔습니다. 반면 한 제품군은 효과가 없었는데, 그 제품군은 P99.99 에서도 ③ 큐 대기가 커서 겹침 회피의 표적이 없었습니다. 효과가 없는 이유가 같은 원리로 설명되므로, 이 결과를 믿고 선별 적용 기준으로 쓸 수 있습니다.

9 / 12기대효과 — 성과와 업무 적용

정량으로는 P99.99 개선, 정성으로는 판단 도구 두 개가 남았다

정량 성과

P99.99 개선효과 제품군에서 base 대비 [n]× 개선, 전력 절감 병행 시에도 base 아래 예시 값
전력 절감 페널티 상쇄묶음 처리가 올린 꼬리를 정책이 되돌려, 전력 절감을 채택 가능한 옵션으로

정성 성과

지연 분해 계측 지표시뮬레이터에 남는 자산. 다른 워크로드·정책 과제에 재사용
제품군 선별 기준"꼬리에서 겹침 비중이 큰가"로 정책 채택 여부를 사전 판별

업무에서 이렇게 쓴다

선별 적용정책은 겹침만 줄인다. 꼬리에서 겹침 비중이 큰 제품군에만 효과 → breakdown 지표로 사전 판별
전력 정책 판단지연 페널티를 상쇄할 수 있으니, 전력 절감 채택 여부를 꼬리 지연과 함께 판단
새 제품군 설계병렬 구조(plane · channel 수)에 따른 꼬리 지연 예측 근거
Random read 꼬리 지연은 세 가지 대기 시간의 합이다. 겹침을 피하도록 스케줄링하면 P99.99 가 내려가고, 효과 있는 제품군은 미리 가릴 수 있다.
한계 → 11장
발표자 노트 · 40초

정량으로는 P99.99 개선과 전력 절감 페널티 상쇄, 정성으로는 판단 도구 둘이 남았습니다. 계측 지표는 다른 과제에도 쓰는 자산이고, 선별 기준은 제품군별로 이 정책을 켤지 정하는 근거입니다. 업무에서는 전력 정책 채택 판단, 제품군별 정책 적용, 새 제품군의 병렬 구조 설계에 씁니다.

10 / 12기대효과 — 교과목 연계

네 과목이 각각 정책 · 해석 · 골격 · 물리 배경을 맡았고, 꼬리 분석은 따로 배웠다

운영체제기초 스케줄링 정책 진화 · convoy effect · 디스크 스케줄링 (SSTF 굶김 vs SCAN) 컴퓨터구조 성능 지표 · Little's Law · Amdahl · Power Wall · Hazard / OoO 컴파일러 List Scheduling — READY 집합 · 자원 제약 · 우선순위 발행 디지털집적회로 NAND 셀·스트링 동작 · 동적/정적 전력 · 전력 vs 지연 정책 설계 · 임계값 (굶김 방지) 6장 · 부록 A1 지연 분해 · 결과 해석 · 전력 배경 2장 · 5장 · 7장 · 8장 겹침 회피 정책의 골격 6장 — 준비된 read 중 충돌 없는 것을 우선 NAND · plane 에서 기다리는 물리 배경 2장 · 4장 보조: 논리설계 (Low Power — idle 자원 묶어 끄기 · Verification 매트릭스) · 시스템프로그래밍 (starvation 정의) 과정에 없어 자체 학습·설계: percentile 꼬리 분석 · plane/channel 병렬 모델 · 임계값(양보 한도) 설계
각 장 하단 "적용 과목" 참조
발표자 노트 · 30초

교육 내용 중 넷을 직접 썼습니다. 운영체제의 스케줄링 정책과 디스크 스케줄링의 starvation 트레이드오프가 정책과 임계값의 근거였고, 컴퓨터구조의 성능 지표와 Little's Law, Amdahl 이 지연 분해와 결과 해석에, 컴파일러의 List Scheduling 이 준비된 요청 중 충돌 없는 것을 먼저 고르는 정책 골격에, 디지털집적회로의 NAND 동작이 같은 plane 에서 왜 기다리는지에 쓰였습니다. percentile 꼬리 분석과 plane·channel 병렬 모델은 과정에 없어 따로 학습했습니다.

11 / 12기대효과 — 한계와 개선 계획

임계값은 아직 실험값이고, 선별 조건은 정식화가 남았다

한계

L1임계값을 제품별 실험(스윕)으로 정한다. 새 제품군마다 실험이 필요
L2효과 있는 제품군의 조건이 경험적이다 (세 제품군에서 관찰)
L3read 전용 random 워크로드만 검증했다

개선 계획

N1임계값을 내부 지표(겹침 비중 · 큐 깊이)로 계산하는 수식 검토 — 실험 없이 초기값
N2선별 조건을 breakdown 비중 기준으로 정식화 — "꼬리에서 ①② 비중 ≥ x"
N3쓰기 혼합 워크로드로 확장. 쓰기·소거가 plane 을 오래 점유할 때의 정책 동작 확인
스윕 곡선 → 부록 A2
발표자 노트 · 30초

한계 셋입니다. 임계값이 아직 제품별 실험값이라 내부 지표로 계산하는 수식을 검토하겠습니다. 효과 있는 제품군의 조건이 경험적이라 breakdown 비중 기준으로 정식화하겠습니다. read 전용만 검증했으니 쓰기 혼합 워크로드로 넓히겠습니다. 이상입니다.

A1부록 — 대안 정책 비교

정적 우선순위는 쉽지만 굶기고, 겹침 회피에 임계값을 붙인 것이 꼬리와 굶김을 함께 잡는다

대안 비교

정책꼬리 지연굶김구현판단
도착순 유지 (base)겹침 그대로없음기준선
정적 우선순위 (plane 별 고정)일부 개선있음 — 낮은 순위 plane 굶음쉬움탈락
겹침 회피 + 임계값 (선택)①② 직접 줄임임계값으로 상한중간 — plane/channel 점유 추적채택

근거: 운영체제기초 — SSTF 의 굶김 위험 vs SCAN 의 응답시간 보장 (효율 우선 재정렬에는 상한이 필요하다)

정책 — Plane 0 으로 몰린 read 두 건 도착순 (기존) read A → P0 B 대기 (① 겹침) read B → P0 read C → P3 는 B 뒤에서 기다림 겹침 회피 (새 정책) read A → P0 read C → P3 먼저 read B → P0 시간 양보에는 한도가 있다 — 임계값 겹침이 풀릴 때까지만 양보. 누적 대기가 임계값을 넘으면 그냥 발행 (굶김 방지) 결과 — P99.99, base = 1.00 (낮을수록 좋음) 1.00 1.00 base 1.35 전력 절감 0.72 base + 새 정책 0.85 전력 절감 + 새 정책 전력 절감이 올린 것을 정책이 base 아래로
적용 과목 · 운영체제기초 (디스크 스케줄링: SSTF vs SCAN)6장
질문 받으면 말할 것

정적 우선순위는 구현이 쉽지만 낮은 순위 plane 이 굶습니다. 운영체제 수업의 SSTF 대 SCAN 과 같은 트레이드오프라, 효율 우선 재정렬에는 상한이 필요하다고 판단해 겹침 회피에 임계값을 붙였습니다.

A2부록 — 측정 조건과 신뢰성

같은 조건을 반복해 변동폭을 재고, 임계값은 스윕의 최소점을 썼다

측정 조건

워크로드host random read, 균등 분포 사내: 크기·큐 깊이
환경SSD 시뮬레이터 + 지연 분해 계측 (t0 ~ t3)
제품군Family-A / B / C — plane · channel 수가 다른 3종
구성base / 전력 절감 / base + 정책 / 전력 절감 + 정책
반복시드를 바꿔 N 회, 변동폭 기록 사내 확인
임계값제품군별 스윕 → P99.99 최소점 채택 (오른쪽)
임계값 스윕 — P99.99 (상대값) 예시 임계값 (양보 한도) → 높음낮음 채택값 너무 작음: 양보를 못 해 겹침 그대로 너무 큼: 양보당한 read 가 굶음
곡선은 예시 7·8장
질문 받으면 말할 것

같은 워크로드와 시뮬레이터에서 시드만 바꿔 반복했고, 개선폭이 변동폭보다 큰지 확인했습니다. 임계값은 너무 작으면 양보를 못 해 겹침이 그대로고, 너무 크면 양보당한 read 가 굶어 다시 올라갑니다. 그 사이 최소점을 채택했습니다.

A3부록 — 왜 이 과제인가

전력 정책의 지연 부작용을 판단하려면, 수업의 구조 지식과 스케줄링 지식을 붙여야 했다

교육에서 배운 것 HW · 저장장치 구조 (plane / channel) SW · 스케줄링 · 큐잉 시뮬레이션 · 성능 분석 architect 업무에서 만난 문제 전력 절감 정책(bank 묶음 처리)이 꼬리 지연을 얼마나, 왜 올리는지 판단할 근거가 없었다 "평균은 괜찮은데 P99.99 만 튄다" 이 과제 = 계측 도구 + 정책 구조 지식으로 지연을 분해하고 스케줄링 지식으로 줄였다 출발은 부작용 수습, 도착은 일반 random read 개선
10장
질문 받으면 말할 것

수업에서 저장장치 구조와 스케줄링을 배웠는데, 실제로 전력 정책이 꼬리 지연에 주는 영향을 판단하려면 그 둘을 붙여서 어디서 얼마나 기다리는지를 재는 도구가 필요했습니다. 그 간극을 직접 메워 보는 게 이 과제였습니다.