본문으로 건너뛰기

신규 아이템 발굴 (2026-06-25)

코드·이슈·PR을 직접 훑어 정리한 발굴 리스트. 각 항목에 🆕 NEW(기존 문서에 없음) 또는 📎 기존(참조 링크) 표시. 이어서 모드 적용(MP / In-process)과 우선순위 정렬을 붙였다.

진행중/대기/폐기 + follow-up(F1·F2)의 canonical 상태는 status_snapshot_2026-06-24.md. 이 문서는 "그 위에서 새로 무엇을 발굴했나"에 한정.


1. 발굴 리스트 — NEW vs 기존

🆕 NEW — 기존 노트 어디에도 없는 것

#항목근거 (코드/이슈)비고
N-1LocalDiskBackend/fs L2 adapter 진짜 배칭 안 함 — 키마다 직렬 writenon-MP local_disk_backend.py:370 # TODO(Jiayi): enable real batching (루프만 돔) / MP fs_l2_adapter.py:582 _execute_storefor key, obj in zip(...)우리 io_uring 배칭(#3636)은 raw_block 전용. 정작 더 널리 쓰이는 disk/file tier는 per-key 직렬 그대로
N-2LocalDiskBackend 디스크 공간 allocator 부재 → fragmentation/용량 회계local_disk_backend.py:155, 328 # TODO: disk space allocator to avoid fragmentation / # Fragmentation is not considered here장기 가동 디스크 캐시 단편화. MP 쪽은 #3859(Daejun, fs L2 capacity eviction)가 점유
N-3EngineCore RssAnon 무한 증가 → host OOM (embedded v1)Issue #3767 (06-20)⚠️ 부분 PR 존재: #3793(ctypes heap-type leak fix). 근본 다 잡는지 미검증 — raw_block/MemoryObj 관여 여부 확인 가치
N-4GDS backend가 LMCache Statistics에 미연결gds_backend.py:327 self.stats = None # TODO: plug into LMCache StatisticsGPU-direct storage 경로 관측 사각. observability 트랙(E-1)에 흡수 가능

📎 기존 — 이미 문서에 있던 것 (참조 링크)

#항목기존 문서코드 재확인 결과 (2026-06-25)
E-1tier hit-rate + TTFT decomposition 관측v2 B1upstream Issue #3752(06-22)로 공식화·PR 아직 없음 — 우리 B1보다 스코프 넓어짐
E-2런타임 TRIM (slot free 시 discard)nvme feature discovery §N1core.py에 런타임 discard 호출 0건 재확인. #3519 머지·상윤 조율 선행
E-3uring_cmd checkpoint read EINVAL 근본 수정 이슈화status_snapshot F2 · followup#3841·#3812 모두 미해결 분석 완료. 이슈 등록만 남음
E-4_snapshot_state lock 보유 중 전체 직렬화priority Tier3 P1⚠️ 코드가 노트보다 악화: core.py:1576-1616 lock 잡은 채 entry별 .tolist()·dtype 조회까지 수행. 노트는 "shallow copy 분리"만 언급
E-5_free_slots O(n) 멤버십 / LIFOv3 §H1/H2core.py:1488 slot in self._free_slots(O(n)), :1477 .pop()(LIFO) 그대로 존재
E-6checkpoint payload overflow silent-skipv3 §S2core.py:1636-1643 payload too large ... return False 여전. JSON 전체 직렬화(:1689)도 그대로

2. 모드 적용 (MP / In-process)

모드 경계 근거([[mp-vs-non-mp]]):

  • raw_block core.py = RawBlockCore 공유 → RustRawBlockBackend(non-MP) + RawBlockL2Adapter(MP) 둘 다 → 코어 항목은 모두 BOTH
  • LocalDiskBackend = non-MP StorageManager 전용 / MP는 fs_l2_adapter·fs_native_l2_adapter(별도 코드, 같은 빈틈)
  • gds_backend.py = non-MP / MP의 GDS L1(gds_l1_config, #3589)은 별도 코드
  • #3767 RssAnon = 이슈가 명시적으로 "embedded mode" = non-MP
#항목MPIn-process근거 / 코드 경로
🆕 N-1disk/file 실배칭non-MP LocalDiskBackend.batched_submit_put_task(:370) / MP fs_l2_adapter._execute_store(:582). 둘 다 직렬, 코드 다름
🆕 N-2disk allocator/단편화⚠️non-MP LocalDiskBackend(:155,:328). MP는 #3859가 점유
🆕 N-3RssAnon 무한 증가Issue #3767 "embedded mode" = non-MP 전용 재현. 근본 ctypes는 공유 코드
🆕 N-4GDS Statistics 미연결⚠️non-MP gds_backend.py:327. MP GDS L1(#3589) 별도 코드
📎 E-1tier hit-rate/TTFT 관측plumbing 다름: non-MP PrometheusLogger/cache_engine vs MP mp_observability. #3752가 양쪽+TP bridge 포함
📎 E-2런타임 TRIM공유 core.py. MP-leaning — 글로벌 EvictionController churn 집중
📎 E-3uring_cmd EINVAL공유 core.py read/recovery(_load_meta_payload, load_many_into)
📎 E-4_snapshot_state lock공유 core.py:1576, checkpoint loop 공통
📎 E-5_free_slots O(n)/LIFO공유 core.py:1488/1477
📎 E-6checkpoint overflow공유 core.py:1636

범례: ✅ 해당 · ⚠️ 부분/별도코드·타인 점유 · ❌ 비해당


3. 우선순위 정렬

기준: 선행조건(병목) → 영향도 → 규모·리스크 ([[글로벌 규칙 §우선순위]]). "쉽다/새것"이라고 앞세우지 않음. 모드 가치(BOTH > non-MP 전용) 반영.

순위#항목모드왜 이 순위
1📎 E-3uring_cmd EINVAL 이슈 등록BOTH병목 언블록. 분석 완료·1시간. 없으면 uring_cmd recovery 무기한 정지. @DongDongJu Rust 수정 선행
2🆕 N-1disk/file 실배칭BOTH신규 최선. 양쪽 해당·upstream TODO 명시·raw_block 배칭 경험 재사용. 영향 높음·인터페이스 무변경(저리스크)·독립
3📎 E-2런타임 TRIMBOTH(MP-lean)영향 높음(WAF↓·Samsung 협업). #3519 discard() 재사용. #3519 머지+상윤 조율 선행
4📎 E-1tier hit-rate/TTFT 관측BOTH영향 높음(#3752 공식화·PR 공백)·독립. N-4 흡수. 규모 큼(메트릭 6종+OTel+JSONL, 모드별 plumbing 2벌)
5🆕 N-3RssAnon 분석non-MP확인 비용 작음(grep 5분). #3793 중복 가능 → 빠른 판단. 영향 미지수·non-MP 전용
6📎 E-4_snapshot_state lockBOTH코드가 노트보다 악화. 영향 중간(대용량 index)·규모 작음
7📎 E-5_free_slots O(n)/LIFOBOTH영향 중간·규모 작음. FDP wear-leveling 선행이나 단독 이득 제한
8🆕 N-4GDS Statisticsnon-MP영향 낮음·규모 작음. E-1에 흡수 권장
9📎 E-6checkpoint overflow(S2)BOTHStd SSD는 #3449로 해소. Daejun 답변 대기로 진행 막힘
10🆕 N-2disk allocator/단편화non-MP큰 설계(eviction 얽힘)·MP는 #3859 점유. 영향 대비 규모·리스크 과다 → 맨 뒤

의존 체인 / 착수 가능

  • 즉시 병렬 착수: 1(E-3 이슈) + 2(N-1) + 5(N-3 빠른 확인)
  • 외부 선행조건 대기: 3(E-2, #3519+상윤) · 9(E-6, Daejun)
  • 흡수 권장: 8(N-4) → 4(E-1)

4. 결론 (한 줄)

신규 중 N-1(disk/file 실배칭) 이 최선 — BOTH 모드 해당 + upstream TODO 명시 + raw_block io_uring 배칭 경험 직접 재사용. 즉시 착수는 E-3 이슈 등록(병목 언블록)이 먼저.