CHANGELOG
날짜 역순. 형식: [new] 새 파일 · [mod] 수정 · [move] 이동/이름변경 · [del] 삭제
2026-06-25
- [new]
work/fdp/CLAUDE.md,work/fdp/AGENTS.md— FDP 트랙 전용 에이전트 지침 추가. private root 규칙과 분리해 FDP 문서 역할, smrc local commit/push 금지 정책, FDP 전용 changelog 정책을 해당 작업공간에서 바로 보도록 정리. - [new]
scripts/check_links.py— 문서 broken/stale 링크(link rot) 점검·수정 도구.--fix(옮겨간 위치로 상대경로 재계산)·--json·--quiet(훅용 1줄 경고). 링크 전략=상대경로 유지(웹·모든 클론 포터블; 절대경로는 머신/클론마다 깨져 배제), rot은 스크립트가 흡수. 래퍼 2종 — 글로벌 스킬/check-links(~/.claude/skills/) + LMCache.claude/settings.local.json의 Stop 훅(매 턴 끝--quiet점검, 깨진 링크 있을 때만 경고·차단 안 함). ※스킬·훅은 private/ 밖이라 본 CHANGELOG 정식 대상 아님(참고 기록). - [mod] 링크 전수 정리 → 0 broken / 0 dangling. 페치된 fdp 파일(SUMMARY·05_design·steady-state) 유입으로 이전 dangling 43건 해소 + L1/L3 repo-root 참조 8건(
../../→../../../../) 수정. 페치된 옛경로 커밋 vs 우리 reorg 내용 비교: 유실 없음(차이는 전부 우리 링크수정·prose 재작성·배너). - [mod]
work/fdp/SUMMARY.md,work/fdp/README.md,work/fdp/PLAN.md,work/fdp/status.md— private GitHub reponayeonikim/LMCache-fdp-eval생성 및 baseline import 정책 기록.DongDongJu/LMCache:fdp-waf-agentic-replay-poc @ 35784a3c를main,upstream/dongdongju-fdp-poc,baseline/dongdongju-fdp-poc-35784a3c로 고정하고, smrc는 local commit 허용/push 금지로 명시. - [mod]
work/fdp/SUMMARY.md,work/fdp/README.md,work/fdp/PLAN.md,work/fdp/status.md— smrc 문서 정책 보강. smrc는 durable 문서 저장소가 아니라 임시 실행/작성 장소이고, 발생 문서·결과 메타데이터는 개발 PC로 가져와private/work/fdp또는LMCache-fdp-eval에 선별 반영하도록 명시. - [new]
work/fdp/CHANGELOG.md— FDP 트랙 전용 changelog 분리. smrc 평가 산출물 회수 이력은 루트 changelog가 아니라 FDP 전용 changelog에 기록하도록 정리. - [new]
work/fdp/SUMMARY.md,work/fdp/05_design/README.md— FDP 기준 작업공간(/home/ny/LMCache/private/work/fdp)과 PoC 외부 source root($FDP_POC_SRC=/home/ny/workspace/LMCache-fdp-poc-src) 명시. 단계 5 설계 산출물 자리표시 추가. - [mod]
work/fdp/PLAN.md,work/fdp/README.md,work/fdp/status.md,work/fdp/01_branch_audit/{01_codebase_map.md,03_fdp_implementation_audit.md,04_harness_metrics.md}—private/work/fdp기준으로 깨진 내부 링크를 상대 링크로 정리하고, 이 checkout에 없는 PoC branch 파일 링크는$FDP_POC_SRC/...코드 경로로 표기. - [mod]
work/fdp/02_smrc_env/smrc_env_report.md,work/fdp/03_build_test/{README.md,build_and_test.sh},work/fdp/04_measure/{run_poc_harness.sh,runbook.md,summary.md}— 실행 기본 경로를/home/ny/LMCache/private/work/fdp와/home/ny/workspace/LMCache-fdp-poc-src로 통일. - [mod]
docs/notes/l2_adapters_overall_KR.md,docs/notes/raw-block-perf-findings_vs_pr3274.md— 옛 raw_block/nixl_store 상대 링크와 소실된 Windows Claude project memory 링크 정리. - [mod]
tasks/index.md— FDP 트랙 진입점에work/fdp/SUMMARY.md와 design follow-up 기준 반영. - [new]
work/fdp/05_eval_redo/01_steady_state_overprovisioning_plan.md— FDP PoC 다음 평가 계획 문서화. 기존 32GiB window-local R0 결과는 harness 검증으로 한정하고, FDP 효과 주장은 overprovisioning/free-block headroom gate와 steady-state WAF gate를 통과한 뒤 3-mode 반복 비교로 판단하도록 정리. - [mod]
work/fdp/README.md,work/fdp/status.md,tasks/index.md— 위 steady-state / OP gate 계획을 FDP 트랙 진입점과 현재 상태에 연결. - [move] work/ 작업물 재구조화 —
work/<트랙> → <작업단위 주제폴더> → 파일2단계로. ①work/s2_checkpoint_overflow/→work/checkpoint/리네임. ②work/raw_block/flat(19)+io_uring/(5) → 주제폴더 5개:put-many-batch/(P0·P0-B·F1·benches·io_uring 배칭노트),dispatch-rollback/(L2·pr3698),batched-remove/(L3·candidate_a1),recovery/(V1·recovery_validation_*·uring_cmd),_misc/(pending_cleanup·L1폐기).io_uring/폴더 해체. 목적: "무슨 작업·성과" 폴더목록으로 한눈에 + 산출물 찾기 쉽게. 폴더명=주제, ID/PR/성과는 README 매핑. - [move]
docs/notes/→work/raw_block/5건(내 PR 작업이라 분석폴더서 작업폴더로):pr3698_put_dispatch_rollback→dispatch-rollback/,raw_block_recovery_validation_parallel→recovery/,io_uring_padded_write_{semantics_implementation,user_validation_guide}·iouring_batched_padded_write_review→put-many-batch/(P0-B). docs/notes엔 분석 14개만 잔류(외부 PR #3274 분석 포함). - [new]
work/README.md(트랙 맵+성과) ·work/raw_block/README.md(성과 보드: 작업단위↔overview ID↔PR#↔한줄성과). status는 overview SSOT, README는 산출물↔ID 매핑만(중복 금지). - [mod] 이동·리네임으로 깨진 링크 일괄수정 — body 196 + frontmatter related 8 + prose 경로(s2_checkpoint_overflow→checkpoint, raw_block/io_uring/→put-many-batch/) 치환. 재구조화 관련 클릭링크 0 broken(L3 basename 충돌은 wiki 아닌 batched-remove로 정상 해소). fdp/·L1·L3의 repo-root 참조 등 기존(pre-existing) 깨짐은 범위 밖이라 미수정.
- [mod]
tasks/index.md§3 디렉터리맵을 work-unit 구조로,checkpoint/·성과보드 링크 반영. - [mod]
CLAUDE.md(private) — "문서 위치 규칙: docs/notes vs work/" 섹션 추가(기준·신호·work 2단계 컨벤션). 글로벌/home/ny/.claude/CLAUDE.md선행절차에 work/<트랙>/<작업단위>/ 추가 + step4 갱신 + 110행 docs/notes 예시서 recovery_validation_parallel 제거(work로 이동). - [mod]
README.md(private) — 진입점을 00_overview(SSOT)+index(맵)로, "문서 위치 규칙" 한 줄 추가, 디렉터리 트리 현행화(tasks/todo·work 트랙/작업단위·checkpoint·docs/notes=분석). - [new]
AGENTS.md(private) — 한 줄 포인터(규칙은private/CLAUDE.md따름, 복제 금지). 비-Claude 에이전트(Codex 등)가 private/ 안에서 작업할 때 가장 가까운 AGENTS.md로 CLAUDE.md를 가리키게 함. (글로벌/home/ny/.claude/CLAUDE.md선행절차도 이번 재배치 반영해 priority-landscape 2파일·followup-findings 해체·00_overview SSOT로 정합화 — private/ 밖이라 별도 기록.) - [mod]
tasks/todo/00_overview.md§4 — 블랭킷 "상세:" 링크를 항목별 출처로 교체. 각 후보 ID 칸에 출처 태그(disc=discovery_2026-06-25 /pool=upstream_gap_pool /v1) 병기 + 범례. 두 discovery 문서가 N-1N-4·E-items에서 내용 겹침을 명시하고, §4 항목별 primary 출처를 disc(FS-1·FS-2·SYS-1·OBS-2) vs pool(FS-3·SYS-2·IO-7·L2-27)로 분리. - [mod]
tasks/index.md— 목표 기준 "작업 맵"으로 전면 재편. v1/v2/v3 제안버전 분류 폐기 → §1 작업 트랙(메인 raw_block / FDP PoC / HC-SSD overflow / 발굴 / 리뷰·추적) · §2 goal.txt 4-pillar↔기여 매핑 · §3 디렉터리 맵(work/ 트랙 명시 — 그간 빠져있던 빈틈 메움) · §4 분석 백그라운드 · §5 보관/이력. 아이템 status 표는 전부 제거하고 00_overview(SSOT)로 위임. 링크 0 broken. - [mod]
CLAUDE.md(private) — 인덱스 동기화 룰을 새 맵 구조에 맞춤(새 아이템=overview에 AREA-N, 새 문서/트랙=index 맵). 옛 섹션명(v3/v2/v1) 참조 제거. + 리서치 트랙(FDP PoC) 규칙: status SSOT는 트랙 자체 문서(work/fdp/status.md), overview엔 업스트림 feature 도출 시에만 AREA-N 아이템 추가. - [mod] ID 영역 DSK → FS 명명 변경 (filesystem/local disk backend; raw block=RB와 대비). overview·CLAUDE.md·index 반영.
- [mod]
tasks/todo/00_overview.md— ID 체계AREA-N도입 + §4 후보풀 펼침. AREA=코드 서브시스템(RB raw_block코어 / IO io_uring경로 / L2 MP·분산 / FS filesystem·local disk backend / OBS 관측 / SYS host mem·cpu), N=영역 내 고유번호(우선순위 아님). 옛 ID(H1/E-5/B2/G1/T1…)는 보존하고 각 행에(구 …)병기 + §6 전체 매핑표(새↔옛). 기존 "후보풀" 1행을 개별 12행으로 전개(FS-13·SYS-12·OBS-2·IO-7·L2-2~7) — 코드 file:line·점유 PR·Mode·판단 포함. §0/§7 액션도 새 ID로 갱신. frontmatter에role: SSOT·id-scheme명시. - [mod]
CLAUDE.md(private) — "역할 분리: 통합 원장(SSOT) vs 인덱스(맵)" 섹션 추가. overview=raw_block/NVMe 아이템 status·우선순위 SSOT(아이템 변경 시 먼저 갱신), index=repo 문서 맵(구조 변경 시 갱신)으로 분리해 status 이중기재 방지. 새 아이템은AREA-NID 부여 규칙. - [mod]
tasks/index.md— ★통합원장 행을 SSOT로 재서술(아이템 status는 index 아닌 overview가 정답). - [move]
tasks/todo/priority-landscape/raw_block_line.md·raw_block_split.md→docs/notes/. 둘 다 종단 분석·아키텍처 설명(mermaid) 분석 본문이고, 담긴 후보(C1C6 HC-SSD·FDP hook H1H8·A3)가 통합 원장 §3/§4/§5에 모두 매핑됨을 확인 → 분석은 notes 기준대로 이동. priority-landscape는 raw_block_priority·raw_block_pr_landscape 2개만 잔류. - [mod]
tasks/todo/**깨진 상대링크 일괄 수정 (이번 재배치로../../깊이 변동·분석파일 docs/notes 이동에서 발생). body 클릭링크 65건 + frontmatterrelated:25건 + 수동 3건(basename 충돌: deprecated/·work/wiki/ 동명파일 회피) = 코드경로 포함 0 broken 확인. frontmatterverify-on-update의 git-root 경로(lmcache/·rust/)는 의도적으로 유지. - [new]
tasks/todo/00_overview.md— tasks/todo 11개 문서 통합 원장(한눈에). 같은 항목이 문서마다 다른 ID로 흩어진 것(예:_free_slots=H1/H2=B2+P2=C3=E-5 / checkpoint overflow=S2=D1=C1=E-6 / 텔레메트리=v1Task1=v2B1=E-1)을 단일 행으로 통합. §1 진행중 PR(5건 OPEN) §2 로컬완료·PR대기(P0-B/V1) §3 착수가능·대기 §4 신규발굴 §5 폐기/점유 §6 ID 통합 매핑표 §7 임박 액션. PR/issue 2026-06-25gh직접 확인: #3274/#3271 머지, 우리 PR 5개(#3636/#3835/#3698/#3494/#3480)·#3519/#3449/#3859 OPEN, 이슈 #3767/#3752/#3753 OPEN, S1=#3527 OPEN. stale 정정: #3226은 OPEN(미머지) — v3/nvme의 "merged" 오류. - [mod]
tasks/todo/6개 문서(status-meta v1/v2/v3·status_snapshot_2026-06-24, priority-landscape raw_block_priority·raw_block_pr_landscape, discovery nvme_raw_block_feature_discovery) 상단에 status canonical→00_overview 이전 배너 추가. status·우선순위의 단일 진실원천을 통합 원장으로 이동, 각 문서는 상세 근거·이력용으로 강등. - [mod]
tasks/index.md— 분석 백그라운드에 ★ todo 통합 원장(00_overview) 행 추가, 기존 tasks/todo 행을 "상세 근거"로 재서술, 마지막 갱신일 갱신. - [move] 발굴·우선순위·landscape·followup todo 문서 17건 →
tasks/todo/<분류>/.discovery/(upstream_gap_discovery_pool·discovery·nvme_raw_block_feature_discovery),priority-landscape/(raw_block_pr_landscape·priority·line·split·stack_analysis),followup-findings/(raw-block-perf-findings·_vs_pr3274·io_uring_post_pr3274·recovery_validation_parallel·todo-ssd_io_analysis),status-meta/(status_snapshot_2026-06-24·v1/v2/v3).docs/notes/=모듈 분석 /tasks/todo/=todo 로 성격 분리.tasks/index.md·docs/notes/pr3698_put_dispatch_rollback.md는 이동 제외. 글로벌 CLAUDE.md 선행절차(1·4번)를 두 디렉토리 모두 참조하도록 갱신. - [mod]
tasks/index.md— 위 이동에 맞춰 옮긴 문서들의 링크 타깃·표시 라벨을tasks/todo/<분류>/로 갱신, 분석 백그라운드에tasks/todo/행 추가, L1~L4 분석노트 행 예시에서 이동한 raw_block_line 제거. - [new]
docs/notes/upstream_gap_discovery_pool_2026-06-25.md— upstream dev 기반 발굴 후보 풀(우선순위 정렬 전). GitHub upstream/dev26cd49937aba기준, 2026-06-01 이후 raw_block/storage/io_uring/L2 관련 PR/issue와 주요 PR diff를 확인해 후보를 NEW/기존/점유로 분류하고 MP/In-process/Both 모드를 매핑. P2P read-only store semantics·L2 capability bit·variable-size serde exact-size 확장·GCS/Azure MP parity·raw_block multi-device health follow-up·io_uring queue-depth autotune·LocalCPU batched eviction accounting 등을 NEW 후보로 기록. P2P/GCS/Azure는 우리 storage/NVMe 주력 영역 적합성이 낮다는 메모 포함. - [mod]
tasks/index.md— 분석 백그라운드에upstream_gap_discovery_pool_2026-06-25.md행 추가, 마지막 갱신일 2026-06-25로 갱신. - [new]
docs/notes/discovery_2026-06-25.md— 신규 아이템 발굴 노트(시점 고정, base=upstream/dev26cd4993). upstream/dev 코드 직접 grep + 열린/머지 PR + 이슈 확인으로 발굴. §1 NEW vs 기존: 🆕 NEW 4건(N-1 disk/file backend 실배칭 미구현local_disk_backend.py:370·fs_l2_adapter.py:582/ N-2 disk 공간 allocator 부재 단편화, MP는 #3859 점유 / N-3 Issue #3767 RssAnon 무한증가 embedded, 부분 PR #3793 / N-4 GDS Statistics 미연결gds_backend.py:327), 📎 기존 6건(E-1 관측=v2 B1·#3752 / E-2 런타임 TRIM=N1 / E-3 uring_cmd EINVAL=F2 / E-4_snapshot_statelock=P1, 코드가 노트보다 악화: lock 안 entry별.tolist()까지 / E-5_free_slotsO(n)/LIFO=H1/H2 / E-6 checkpoint overflow=S2). §2 모드 적용: raw_block 코어 항목(E-2~E-6)+N-1+E-1=BOTH, N-2/N-3/N-4=non-MP 전용. §3 우선순위 정렬: 1.E-3(병목 언블록) 2.N-1(신규 최선·BOTH) 3.E-2(#3519+상윤 선행) 4.E-1(규모 큼) 5.N-3(빠른 확인) …10.N-2(큰 설계·맨 뒤). 즉시 병렬 착수=E-3+N-1+N-3. - [new]
work/fdp/contribution/README.md— FDP 기여 작업 디렉토리 안내. 단계 번호(01~05) 외 메타 작업으로 분리,01_branch_audit/(dongdongju PoC 중심)와의 분담 명시. - [new]
work/fdp/contribution/ankit_base_commits.md—remotes/ankit/pr-18커밋 (2026-04-29 ~ 2026-05-08, daegyu94 author) 시간순 해부. 시그니처 변화·정책 placeholder(_assign_fdp_placement_rank_based=placement_ids[0])·fetch_fdp_statusheader-first 호환성 fix·data/metadata RUH lifetime isolation(hardcode) 등 정리. - [new]
work/fdp/contribution/dev_baseline_status.md— origin/dev 시점 FDP 표면 = 0줄 확인(grep검증). 단 인접 baseline(per_tp_device_pathsin-process / MP adapter의 단일 device 모델 / io_uring_cmd 인프라 #3274 머지본)은 존재. daegyu 본 레포 OPEN PR 5건 FDP 무관, ankit#1만 7주째 OPEN. - [new]
work/fdp/contribution/mp_integration_gap.md— ankit#1(in-process plugin) → MP adapter 이식 시 결정적 충돌 = MP가per_tp_device_paths명시적 거부(raw_block_l2_adapter.py:154-157). MP에서 FDP placement_id가 isolation 유일 수단이 됨. write 경로 plug-in 후보 (ObjectKey field /put_many시그니처 / core 내부 결정) 3안 + 재사용 가능/재설계 필요 분리. - [new]
work/fdp/contribution/policy_proposals.md— daegyu 제안 3축(rank / cache_salt / model) ↔ 현재 코드 매핑. "rank는 device 분리로 우회된다"는 단정 정정(topology dependent). 검증 baseline 매트릭스(B0/B1/B2/R/D/M/C). - [new]
work/fdp/contribution/items.md— 이 디렉토리 최종 산출물. 발굴 후보 9개(I-E1I-E4 효과 입증 / I-C1I-C4 코드 구조 / I-O1~I-O2 관측·CLI) + initial priority + 미해결 사용자 입력 필요 4건 (daegyu와 머지 경로 정렬 / PoC MP 동작 실증 / access pattern 자료 / PlacementPolicy 추상화 방향). - [new]
work/fdp/contribution/HANDOFF.md— 다른 세션 인수인계 문서. 사용자 컨텍스트·산출물 위치·핵심 결론 5개·우선순위 7개·미해결 4건·시작 명령 4단계. 새 세션이 cross-reference 없이 한 파일에서 컨텍스트 파악 가능하도록 자기충족 형태. - [mod]
work/raw_block/uring_cmd_recovery_followup.md— "확정 검증 결과 (PM1753, 2026-06-25)" 섹션 추가. 평가 베이스 =perf/iouring-recovery-batched-read-with-uring-cmdtip을cfda5823로 reset (SY 1e379509 제외, NY 본인 커밋만). PM1753(/dev/nvme10n1//dev/ng10n1,max_hw_sectors_kb=256→ auto chunk 256 KiB)에서는 EINVAL 재현 안 됨. benchRawBlockCoreConfig.max_data_transfer_size=2 MiB강제 주입 시 BM1743과 동일 EINVAL 재현. 직교 실험: A(내부 chunk=4096) ✅ / B(aligned buf 단독) ❌ / C(A+B) ✅. 결론: multi-page chunk가 dominant, 시작 ptr 정렬 단독으로는 부족. followup 가설 일부 수정(정렬+chunk 둘 다 필요). fix 방향: Python에서 uring_cmd chunk 상한을 MDTS로 clamp + Rustbatched_readbounce 조건 확장. 진단·실험 패치는 working tree only로 적용 후 모두 revert (git statusclean, 평가 베이스 브랜치에 추가 commit 없음). - [mod]
work/raw_block/recovery_validation_field_test_results.md— frontmatterupdated: 2026-06-25+ secondary_device(PM1753) 추가. "PM1753 추가 실험 (2026-06-25) — 원인 확정" 섹션 신설, 매트릭스 요약 + followup 문서로 cross-link. status를 "io_uring_cmd 버그 미수정"에서 "원인 확정, fix는 별도"로 변경.
2026-06-24
- [mod]
docs/notes/status_snapshot_2026-06-24.md— 완료/진행중 섹션을 테이블에서 항목별 문장 형태로 전환(링크 유지). F2 #3841/#3812 분석 결과 반영. - [mod]
docs/notes/status_snapshot_2026-06-24.md— 관련 문서 링크 전면 추가: 테이블에 "관련 문서" 열 추가(P0·L3·L2fix·Recovery·P0-B·io_uring recovery 각 노트/리뷰 링크), FDP·대기/보류·폐기 항목에 인라인 링크, F2 섹션에 #3841/#3812 분석 결과(두 PR 모두 recovery 미해결 — 부분fix·에러처리만) 및 수정 지점 이동 반영(lib.rs:2092), 임박 액션 3번 구체화. - [new]
docs/notes/status_snapshot_2026-06-24.md— 작업 전체 status 스냅샷(시점 고정). 완료(#3274 머지)·진행중 PR 열림(#3636/#3494/#3698/#3835)·로컬 구현완료 PR대기(P0-B/io_uring recovery)·FDP PoC·대기/폐기 종합 + follow-up 2건(F1 write coalescing planned·Tier1, F2 uring_cmd passthrough checkpoint read EINVAL=비정렬 multi-page PRP 위반→Rust bounce future work, #3841/#3812 커버 여부 확인 필요) + 임박 액션 의존체인. canonical 라이브 상태는 tasks/index.md. - [mod] (코드, 워크트리
../LMCache-partB브랜치perf/iouring-batched-padded-write, base=aead23c=#3636 head) Part B(P0-B): padded O_DIRECT write를 batched_write로 — 커밋 4개(bisect-safe). 근본:batched_write(offsets,buffers,total_lens)가payload_len없이 미정렬 O_DIRECT bounce에서memcpy(...,total_len)→ 소스가payload_len만 유효한데 total_len 읽는 OOB read라 padded write가 batched 불가, per-entrywrite_uring폴백뿐이었음. 수정: ①Rustbatched_write에 optionalpayload_lens(None=total_lens) 추가, bounce에서payload_len만 copy +[payload_len,total_len)명시적 zero-fill(posix_memalign zero-init 비의존, write_uring보다 엄격), validation(payload_len<=total_len/cap>=payload_len/O_DIRECT offset·total_len 정렬), 비-O_DIRECT도cap<total_len이면 bounce. ②Python_write_buffers의can_batch게이트 완전 제거(게이트 False 조건이 padding뿐이라 제거=완화, 동작 동일) + per-entrywrite_uring폴백 삭제(유일 호출처라 dead) → aggregated put_many(2N 엔트리)·metadata write의 padded 케이스가 전부 단일 batched로. ③테스트: device 레벨 padded round-trip(io_uring+opt-in O_DIRECT, 꼬리 zero 검증) + core 레벨 fake에payload_lens기록·read_uring추가, padded put_many가 batched_write(payload_lens 전달)·write_uring 0회 검증. 검증: core 17 + device 6(O_DIRECT 포함) green, pre-commit·clippy(-D warnings)·fmt 통과. 원안 대비 조정: 시그니처 required→optional(기존 3-arg 호출처 무수정), 게이트 완화→완전 제거. #3636 머지 후rebase --onto dev aead23c→ PR(depends on #3636). - [mod]
work/raw_block/io_uring/iouring-batch-follow-up-claude.md— Part B 섹션에 ✅ 구현 완료 + 커밋 순서·검증·원안 대비 조정 기록. - [mod]
tasks/index.md— P0-B 행 추가, P0 비고 "별도 패치 예정"→"P0-B로 분리·구현 완료" 갱신, 마지막 갱신일 2026-06-24. - [mod]
work/raw_block/uring_cmd_recovery_followup.md— 기존 PR #3812(core/rawblock-load-many-iouring-batch, 3xdevv) 검토 섹션 추가. 결론: 이 PR로도 recovery 미해결. #3812은 에러처리/배칭(uring_cmd read를read_uring→batched_read,wait_iouring이Vec<bool>성공 비트맵 반환, per-IO fail-closed)만 변경, 정렬은 안 건드림. Python은bytearray(total_len)/dst[:total_len]비정렬 그대로(a340ab7 Python 보강도 무력화), Rustbatched_readsubmit(lib.rs:2092)는use_odirect만 bounce → uring_cmd 비정렬 ptr 그대로 → EINVAL 잔존(단 크래시 대신 None→indexed=0). 수정지점 이동: #3812 후 1순위 fix 위치가 lib.rs:2092batched_read경로(use_odirect || use_uring_cmd). - [mod]
work/raw_block/uring_cmd_recovery_followup.md— 기존 fix 브랜치priv/sy/fix/raw-block-uring-cmd-aligned-buffers(커밋a340ab7) 검토 섹션 추가. 결론: 이 브랜치만으론 recovery 미해결(부분 fix). a340ab7은_read/_write_uring_cmd_buffers의 padding 경로(len(dst)<total_len) 임시 버퍼만 정렬. recovery_load_meta_payload(core.py:1539)는bytearray(total_len)정확 크기라else분기(dst[:total_len], 정렬 안 함)로 가서 비정렬 그대로 → EINVAL 잔존. 해결은 Rustread_uring비정렬 ptr 무조건 bounce(기존 "수정 방향" (b))가 선행조건.
2026-06-23
- [mod] (코드,
perf/iouring-recovery-batched-read커밋87638cb, amend) uring_cmd를 이 PR에서 제거 → future work 분리. 실 NVMe(524K entries, /dev/nvme6n1↔/dev/ng6n1)서io_uring_cmd가_load_meta_payload에서 EINVAL(errno22)(checkpoint payload read부터 실패)→indexed=0. 원인: passthrough read의 비정렬 multi-page 버퍼 PRP 위반 추정(_read_uring_cmd_buffers버퍼가 비정렬 bytearray, use_odirect=false라 non-bounce). 현재 dev passthrough read 경로 전반의 버그(load 포함)라 별도 Rust 트랙. 조치: core dispatchnot self.use_uring_cmd복원, 테스트_uring_cmd_uses_batched_read→_uring_cmd_uses_sequential환원, 벤치 io_uring_cmd/--cmd-device-path/device_path-omit(P1) 환원. 유지: io_uring(block) batched(실 NVMe 6.08× 검증)·P2 queue_depth 분할·per-slot fallback·POSIX·벤치 posix/io_uring. 신규 노트work/raw_block/uring_cmd_recovery_followup.md(증상/원인/수정방향=정렬 bounce/재활성화 절차, #3274 호칭 정정). 검증: raw_block_core 14 passed, pre-commit 통과, 벤치 tmpfs posix/io_uring indexed=N. - [mod] (코드,
perf/iouring-recovery-batched-read커밋87638cb까지 amend 누적) 리뷰 코멘트 2건 fix(이력). P1(벤치 device_path mismatch): io_uring_cmd 측정 시 prepare는 payload에 block--device-path를 저장하는데 measure는--cmd-device-path(char)로RawBlockCore를 열어, core_apply_loaded_state(core.py:1713)가 device_path mismatch로 metadata 전체 폐기→indexed=0이던 것을 → synthetic checkpoint payload에서device_path키 omit으로 해소(core 검증은 truthy일 때만 동작 → block/char 양쪽 fixture 재사용). README에 의도 명시. production device_path 검증은 불변(데이터 보호용, 완화/alias 안 함). P2(unbounded single batch):_read_slot_headers_batched가 전체 entry를 단일bytearray(n*header_bytes)+단일batched_read로 처리(100만 entry×4KB≈4GiB 단일 할당)하던 것을 →_read_slot_header_batch헬퍼 분리 +iouring_queue_depth(256) 단위 분할 순회로 버퍼 bound(~1MB)·결과 입력순서 보존·batch 단위 fallback(전체 재읽기 회피). TDDtest_..._splits_into_queue_depth_batches(RED→GREEN). 검증: raw_block_core 14 passed, pre-commit 통과, 벤치 tmpfs N=5000(>queue_depth 256 → 분할 경로) indexed=5000(P2 분할·순서 정상 + P1 omit 정상 복구), io_uring 2.23x(N 커지며 batch 효과). 두 리뷰 추천안과 본질 동일 확인. - [new]
work/raw_block/recovery_validation_field_test_guide.md— 다른 PC 실 NVMe 실측 가이드. 커밋87638cb(io_uring batched + uring_cmd + fallback + 벤치 파라미터화) 전체 검증용. 환경요건(block/dev/nvmeXn1+ char/dev/ngXnY, sudo, io_uring_cmd 커널), 브랜치 push/빌드, 단위테스트 13 passed, 벤치 3경로(posix/io_uring/io_uring_cmd) 비교 절차 + 정확성(indexed==N, 특히 passthrough)·성능(실 NVMe+큰 N에서 speedup>1, tmpfs/소량은 무의미) 해석, prepare 덮어쓰기 주의. fallback은 §2 단위테스트로 검증(실 device 인위 I/O 에러 어려움).
2026-06-19
-
[mod] (코드, workspace
perf/iouring-recovery-batched-read, base=origin/priv/dg/raw-block-multithreads-recovery) io_uring batched recovery header validation 구현 + 에러 격리 fallback + uring_cmd 포함 + 벤치 io_engine 파라미터화 (87638cb, amend로 단일 커밋). uring_cmd(NVMe passthrough)도 batched 포함: dispatch_read_slot_headers의not use_uring_cmd조건 제거 → io_uring이면 passthrough 여부와 무관하게_read_slot_headers_batched로. 근거: Rustbatched_read가use_uring_cmd면 자동으로opcode::UringCmd80(passthrough) batch 제출(lib.rsbuild_and_submit_sqe). 단위테스트_uring_cmd_uses_sequential→_uring_cmd_uses_batched_read전환(RED→GREEN). 벤치--io-engine에io_uring_cmd+--cmd-device-path(measure는 char/dev/ngXnY, prepare는 block) 추가. 단 uring_cmd 경로는 실 NVMe 미검증(mock 단위테스트만) — 다른 PC 실 NVMe 실측 예정. (이하 기존) (1) 대규님이 통합 합의안대로 만든 골격(_read_slot_headersdispatch +_is_stale_header+ POSIX threadpool)의_read_slot_headers_batchedTODO placeholder를 NY io_uring 구현(dc3f5d36)으로 교체 — 단일batched_read+wait_iouring, pointer-aligned 버퍼. 리뷰 지적(V1 §7 5건) 전부 해소돼 구현 무수정 이식. base 기존 버그 발견·수정:test_..._iouring_recovery_does_not_use_posix_threads가use_uring_cmd속성 누락으로 Rust 환경에서 이미 실패(importorskip로 가려짐) →use_uring_cmd=False+batched stub 추가. (2) 에러 격리 fallback (TDD):wait_iouring은 batch 슬롯 1개 I/O 에러에도first_error로 전체Err를 던지고 어느 슬롯인지 안 알려줌(lib.rshandle_completion_result/wait_iouring) → 기존except: return [None]*n은 유효 엔트리까지 전부 영구 drop(dev/POSIX는 슬롯별 단건이라 1개만 drop = 회귀였음).except를 per-slot_read_slot_headerfallback으로 교체해 dev/POSIX 격리 동작 복원. RED(falls_back_to_per_slot_on_error: 1 valid+1 bad→[(..),None])→GREEN. 근본 개선(wait_iouringper-completion 결과 API)은 Rust+전 호출자 범위라 future work. (3) 벤치raw_block_recovery_bringup_bench.pyio_engine 파라미터화 —make_config의io_engine="posix"하드코딩 제거,--io-engine {posix,io_uring}(nargs+) 추가, measure를 label-keyed variant(posix는 threads 스윕, io_uring은 batched 단일)로 일반화 + baseline 대비 speedup. README 갱신. 검증: raw_block_core 13 passed, pre-commit(isort/ruff/mypy/codespell) 통과, 실측(tmpfs 768·20000 entries) 세 라벨 모두 측정·indexed 동일(io_uring batched 정상; 성능 우열은 page-cache라 무의미, 실 NVMe 영역). base는 upstream/dev(7b0314fc)보다 뒤(6e992ec4) → PR 직전 rebase 필요. 머지 순서: DG 골격 PR 먼저. -
[mod]
docs/notes/pr3698_put_dispatch_rollback.md— §6 리뷰 Q&A 추가: "예외가 vLLM까지 전파되는가" 질문 대응 (pre-existing behavior, shutdown race 한정, 이 PR 범위 밖 설명 포함). -
[new]
work/fdp/05_eval_redo/00_source_verify.md— FDP 공정 재평가 Phase 0 소스 verify 게이트 결과. PoC 브랜치 재clone 후 harness 소스 확인. 판정: (A) warmup→measurement 사이 내부 discard 전무(grep 0건) → 큰-warmup preconditioner 전략 성립, warmup write persist. (B) WAF=after − after_warmup이라 R0·warmup 모두 WAF window 바깥. (C) 트레이스는 logical 키 write-once(key_id단조증가)·overwrite 노브 없음이지만 device churn은 boundedcapacity_bytesslot-reuse로 의도 설계(run_fdp_waf_stress.py:629"churn may be weak" 경고)·config 조절가능 → generator 수정 불필요. 기존 WAF≈1.0159는 churn 부족이 아니라 드라이브가 full이 아니어서 → Phase 1(NS 축소 steady state)이 해법. 결론: harness·generator 무수정, 오케스트레이션·config만으로 진행. -
[new]
work/fdp/reports/2026-06-19_repeated_trials_host_write_reinterpretation.md— FDP PoC 반복실험(72 run) host write 재해석. 핵심: 세 모드(no_fdp/mixed/separated)의 replay op 수 동일(finish_write/reserve_write 105,728 each, prefetch 6,464, errors 0)이라separated의 host write delta 감소는 store op 감소가 아님.host_write_bytes_delta는 SMARTData Units Written차이(parse_results.py가 summary.json에서 read, Counter consistency 표 Internal==Outer 일치로 검증)이고 mode별 write path는use_uring_cmd=true동일·FDP는 placement directive만 다름. trial_03은 separated가 오히려 큼(no_fdp 464.10 / separated 473.62 GiB) → 비일관. op 동일인데 SMART delta ~127GiB 벌어짐 + WAF ratio 3모드 ≈1.0159 동일 ⇒ host write 감소는 FDP 확정 효과 아니라 controller counter artifact. 권장 리포트 문구 포함. 기존 결과 리포트는 미수정(별도 노트로 보강).
2026-06-18
- [new]
docs/notes/raw_block_recovery_validation_parallel.md— bringup recovery header validation 병렬화 정리(NY+DG 총괄 이슈 근거). DGdg-raw-block-multithreads-recovery상위 2커밋(02874b7POSIX threadpool +_validate_loaded_entries엔진별 dispatch 리팩터/fdaec7f공유 bringup 벤치) + NYperf/validate-batched-read(dc3f5d36io_uringbatched_read단일제출) 분석. 핵심: DG가 남긴_validate_loaded_entries_iouring_serialTODO를 NY 커밋이 채우는 상보 구조 → 머지 화해 순서(DG dispatch 먼저→NY가 그 위 rebase). 중복체크: 관련 이슈 없음, #3226/#3449는 checkpoint 포맷/압축으로 영역 다름. - [new]
work/raw_block/recovery_validation_issue_draft.md— 위 노트 기반 총괄 GitHub 이슈 초안([Perf][RawBlock] Reduce restart bringup time by parallelizing recovery slot-header validation, blank issue 자유형식, @DongDongJu cc). 공동 목표 = restart/recovery bringup 시간 단축. 구조: Goal/Background/Approach(POSIX threadpool·io_uring batched, 검증로직·온디바이스 포맷 불변, 단일 검증루프)/벤치/Future(uring_cmd)/WIP. background 제외. 미등록. - [new]
work/raw_block/recovery_validation_merge_proposal.md— NY↔DG 통합 합의안. 핵심: 분기를_validate_loaded_entries전체가 아니라_read_slot_headers읽기 한 곳으로 좁히고 검증 루프는 단일화(읽기→판정→적용 3층 분리). 코드 스니펫(① 단일 루프 ② read dispatch ③_is_stale_header판정 ④ POSIX threadpool read ⑤ io_uring batched), DG/NY 코드별 살림·버림 표, PR 순서(DG 골격→NY io_uring rebase). scope: POSIX threadpool(DG 구현 완료)·io_uring batched(NY 구현 완료) 둘 다 살림, background 제외.
2026-06-16
- [new]
docs/notes/pr3698_put_dispatch_rollback.md— PR #3698(RawBlock put-dispatch ref/put-task 롤백 fix) 정리 + dispatch/cleanup 2경로 그림. 명칭 정정(dedup 아님, ref-rollback only), double-hop dispatch 설명,scheduled_count경계 불변식, Gemini medium 리뷰(Exception→BaseException) 평가 포함. - [mod]
docs/notes/raw_block_pr_landscape.md— line 85 "PR 생성 예정" → PR #3698 OPEN 갱신 + pr3698 노트 링크. - [mod]
tasks/index.md— L2 행 상태/비고를 "ref 롤백만 PR #3698 OPEN"으로 갱신, pr3698 노트 링크 추가, 마지막 갱신일 2026-06-16. - [new]
work/raw_block/io_uring/iouring-batch-coalesce-writev-plan.md— put_many io_uring write coalescing 계획(Tier 1). 팀원 질문("batching이 드라마틱하게 좋냐, 차라리 merge해서 MDTS까지 큰 IO 한 방")에서 출발. 코드 근거 확인: batch io(#3636)는 submit/wait만 1회로 묶었고 디바이스 커맨드는 여전히 2N개(batched_write→opcode::Write버퍼당 1커맨드, Rust에 writev 없음). 핵심 사실 —hdr_total==header_bytes라 키 내부 헤더+페이로드는 슬롯 연속성과 무관하게 항상 인접 → Tier 1(키마다 헤더+페이로드를 단일 벡터드 커맨드로, 2N→N, append 가정 불필요) 채택, Tier 2(cross-key 연속슬롯 merge)는 실측 후 보류. 공통 의존성=Rustopcode::Writev(복사 없는 iovec 그룹).follow-up-claude.mdPart B(패딩용payload_lens확장)와 같은batched_write에 닿아 시그니처 공동설계 필요로 명시. 4-step 계획(측정 스파이크 go/no-go → Rust writev → Python Tier 1 TDD → 실 NVMe 실측). 미구현·계획만. - [mod]
work/fdp/reports/2026-06-15_poc_harness_evaluation_scenario.md— 테스트 환경 섹션 추가 (SSD 모델/NS/RUH/toolchain/kernel,02_smrc_env/smrc_env_report.md상호참조)
2026-06-15
- [문서 정리] private/ 전반 중복·stale·깨진 링크 정비 (CHANGELOG·index 크로스체크 기반):
- [move]
refs/notes/{l2_adapters_overall, l2_adapters_overall_KR, l2_adapters_contract, plugin_pipeline, raw_block_line}.md(5) →deprecated/refs/notes/,refs/lmcache_overview.md→deprecated/refs/—docs/notes/·docs/lmcache_overview.md가 canonical(README/index 참조, 더 최신·큼),refs/쪽은 같은 날 더 이르게 만든 작은 복제본. 빈refs/notes/디렉토리 제거. (refs/*_ko.md번역쌍·pr3274_iouring_nvme.md는 유지) - [del]
work/raw_block/iouring-batch-put-many-{finalize,review-fixes}.md— 0바이트 빈 stub. 실내용은 06-12work/raw_block/io_uring/로 이동됐는데(커밋ce803a5c, CHANGELOG 누락분 소급) 원위치에 빈 파일만 남고 index 가 이를 링크 중이었음. - [move]
work/raw_block/io_uring/iourint-batch-follow-up-claude.md→iouring-batch-follow-up-claude.md(파일명 오타iourint수정). - [mod]
tasks/index.md— iouring-batch 링크를io_uring/서브디렉토리로 repoint, v1 섹션 깨진 링크task1_impl_plan.md→latency_histogram_impl_plan.md, M1🚫(흡수)/M2 착수가능 으로 #3274 머지 반영, 갱신일. - [mod]
README.md— 구식 디렉터리 구조(docs/_archive 만 나열)·"다음 작업 TODO 4.5" 를 현 구조 + 진입점(tasks/index.md) +deprecated/안내로 재작성. - [mod] #3274 "미머지/머지 임박" → 머지 완료(2026-06-11, 7021790) 정정:
docs/notes/io_uring_post_pr3274.md(frontmatter·배너),tasks/v3_standalone_items.md(M1/M2·착수조건),tasks/nvme_raw_block_feature_discovery.md,work/fdp/PLAN.md(리스크 해소). - [mod]
docs/notes/raw-block-perf-findings.md— #3274 머지로 §2-2/§2-3/§3-1 부분 stale 배너 추가. - [mod]
tasks/todo-ssd_io_analysis.md—refs/notes참조를docs/notes로 repoint(이동 반영), 헤더./lmcache_overview.md→../docs/lmcache_overview.md(pre-existing 깨진 링크 정정). - [mod]
tasks/index.md— FDP-PoC 행 깨진 링크CONFLUENCE_FDP-PoC-검증계획.md→ 실제 개명본FDP_for_LMCache.md로 정정. - [mod]
CLAUDE.md(private) — CHANGELOG·인덱스 "제외" 스코프에deprecated/추가. - (개별 확인)
raw_block_split/raw_block_stack_analysis/core_py_analysis/raw_block_priority/raw-block-perf-findings/_vs_pr3274/io_uring_post_pr3274는 중복이 아닌 계층적 분석 세트(상호참조)로 확인 → 유지.
- [move]
- [mod] (코드, workspace
perf/rawblock-put-many-plugin-dedup) plugin-dedup → 순수 ref-rollback fix로 축소 (8046269e). dedup 배치화(exists_many+단일_put_lock윈도우,upcount)를 dev 원본으로 되돌리고 dispatch 실패 시 ref/_put_tasks롤백만 유지. 근거: dedup은 구 L2 폐기 판단(<1% gain·미입증)과 동일 계열 +_put_lockhold 증가 트레이드오프 미입증. empty-keys early-return·테스트 제거(dev가 이미 None 반환). dev 대비 diff = dispatch try/except 롤백 블록만 추가. 커밋 제목[Fix][RawBlock] Roll back put-task refs when dispatch scheduling fails. 검증: 테스트 클론(c_ops 재빌드 — dev EngineKVFormat rename으로 stale.so였음)test_rust_raw_block_backend.py31 passed(롤백 2종 포함), pre-commit 전 항목 Passed. PR 생성 예정. - [mod]
docs/notes/raw_block_pr_landscape.md— §1 #3636 비고·§5 plugin-dedup 항목을 dedup 폐기→순수 fix 전환(8046269e)으로 정정. - [mod]
work/raw_block/P0-put_many-parallel-io.md— 체인지로그 행 추가: plugin-dedup의 dedup 폐기·ref-rollback fix 전환(8046269e). - [mod] (코드, workspace+origin) 브랜치 rename
perf/rawblock-put-many-plugin-dedup→fix/rawblock-put-dispatch-ref-rollback(내용이 dedup→순수 fix로 바뀌어 이름 정합화). origin(nayeonikim 포크)에 새 이름 push(8046269e) + 옛 origin 브랜치 삭제. PR 미생성(사용자가 직접 생성 예정).
2026-06-12
- [mod]
work/raw_block/iouring-batch-put-many-review-fixes.md— PR #3636 리뷰 반영 패치에 large-batch lock fairness 대응 추가._MAX_PUT_MANY_IO_URING_BATCH_KEYS = 64기준 근거 정리(RustRING_SIZE=256, key당 2 SQE → 64 keys = 128 SQE = 기본 ring 절반),_put_many_batch_io는 chunking entry,_put_many_batch_io_chunk는 single-submit primitive 로 역할 분리(64-key 이하 단일 submit, 초과 시 bounded chunks, chunk 경계 duplicate 은 첫 occurrence 결과 공유), 신규 테스트test_raw_block_core_io_uring_put_many_chunks_large_batches기록. 검증: targetedpytest test_raw_block_core.py15 passed, Rust 확장 차단 simulation 11 passed/4 skipped,git diff --checkclean. targeted pre-commit 은 approval token refresh 문제로 실행 거절되어 우회하지 않음.
2026-06-11
- [new]
work/raw_block/iouring-batch-put-many-review-fixes.md— PR #3636rawblock-put-many-iouring-batch리뷰 반영 패치 노트. importorskip 축소(실 Rust 필요 테스트만 skip), same-batch duplicate parity([K,K] -> [T,T]), oversize/pre-submit failure per-key 격리, fake device partial-completion rollback 테스트를 정리. O_DIRECT batch fallback 리뷰는 타당하지만 Rust API 확장 또는 copy+pad 전략이 필요해 이번 Python-side 상태 정리 패치 범위 밖으로 명시. 작업 트리 검증:test_raw_block_core.py14 passed, Rust 확장 차단 simulation 10 passed/4 skipped, pre-commit targeted passed, diff --check clean. - [mod] (코드, workspace) 3개 raw_block 브랜치 origin push + iouring-batch PR 생성 + 문서 갱신. replay 이후 upstream/dev HEAD 가
45c02cbe까지 추가 진전(7021790 이후). 세 브랜치 모두 origin(nayeonikim 포크)에 push 완료:iouring-batch3b8260a0 /plugin-dedup1cc5a74d /validate-batched-readdc3f5d36. iouring-batch → PR #3636 OPEN(dev 대상, 05:43Z, https://github.com/LMCache/LMCache/pull/3636). plugin-dedup·validate-batched-read 는 push 만, PR 미생성(후속 독립 PR 예정). 문서 갱신:work/raw_block/iouring-batch-put-many-finalize.md(frontmatter status/pr/head·base-commit + §4 — push·PR 상태, validate 후속 항목 추가),docs/notes/raw_block_pr_landscape.md(based-on-commit→45c02cbe, §1 #3274 머지·#3636 신규 행, §3/§4 G2/P0 → PR #3636, §5 다음 액션 갱신). - [mod] (코드, workspace) 3개 raw_block 브랜치 upstream/dev replay + 검증. PR #3274 가 upstream/dev 에 squash 머지됨(머지커밋
7021790= upstream/dev HEAD). 로컬 basebf7d2ff(#3274 PR head)는 squash 라 upstream/dev 의 조상 아님 → 세 브랜치의 단일 feature 커밋만git rebase --onto upstream/dev bf7d2ff로 replay. 결과:iouring-batch860d0598→9d915fa,plugin-dedup9c8f0621→f4a7727,validate-batched-read8f87448→bf096dc (셋 다 parent=7021790). 무충돌(core.py/test_raw_block_core.py/test_rust_raw_block_backend.py 는 bf7d2ff↔upstream/dev 동일; plugin 파일 squash 차이는_submit_put_many영역으로 feature 의batched_submit_put_task와 비중첩).git range-diff로 세 커밋 모두 내용 무변(=) 확인. 백업 태그bak/{iouring-batch,plugin-dedup,validate-read}생성. 검증: 테스트 클론 venv+ws 소스 — validate 11 passed / iouring-batch 11 passed / plugin-dedup 31 passed, pre-commit 세 브랜치 전 항목 Passed. 이제 dev 직접 PR 가능(#3274 머지로_submit_put_many등 인프라 dev 제공). push/PR 미실행(승인 대기) — 3개 독립 PR(core 배칭 / plugin dedup / startup validation 배치) 대상 upstreamdev. - [new] (코드, workspace
perf/rawblock-put-many-plugin-dedup, 9c8f0621) plugin put_many dispatch dedup + refcount 롤백 — 후속 PR. basebf7d2ff(=#3274 head, dev엔_submit_put_many부재로 dev base 불가 검증 후 #3274 독립 분기).rust_raw_block_backend.pybatched_submit_put_task: (1) 키별contains_key(FFI)×N +_put_lock반복 →exists_many(배치 1회) + 단일_put_lock윈도우 dedup, (2) ref_count_up 후 dispatch try/except — 실패(루프 셧다운 등) 시 올린 ref 전량ref_count_down+_put_tasks정리(기존 누수 수정), (3) 빈 keys 조기 None. io_uring+N>1 funnel·fanout·core write semantics 무변경(멱등). TDD: fake io_uring backend 테스트 2종 추가(empty-keys None / dispatch 실패 시 ref 롤백·put_tasks 정리) — base에서 rollback 테스트 red(GC ref_count=2 누수 재현) 확인 후 구현 green. 전체 plugin 테스트 31 passed, pre-commit 통과. iouring-batch core PR(_put_many_batch_io)과 직교 — 병렬 리뷰 가능. push 미실행. - [new]
work/wiki/raw-block-put-many-iouring-batch.md— 팀 위키 공유용(붙여넣기) 문서. iouring-batch core 배칭(_put_many_batch_io) 최적화 공유. 기존raw-block-put-many-write-path.md(=batch-io 통합본, plugin 포함)와 구분되는 core 단독 버전: §2.1 plugin 무변경 근거(PR#3274 funnel), §3 all-or-nothing(버퍼 준비까지 롤백 보증) + write_succeeded 단일 루프, §4 fake io_uring device 계약 테스트 7종(단일제출·2N엔트리·wait1회·부분슬롯소진 포함), §5 plugin 개선 후속 분리, §6 실측 계획. 인터페이스 무변경. - [mod] (코드, workspace
perf/rawblock-put-many-iouring-batch) 1fe16ba → 860d0598 amend. 보완 3건(Phase B 롤백 / 부분슬롯 테스트 / integration 제거)을 단일 커밋에 fold + 커밋메시지 최종화(integration 언급 제거, "buffer preparation or the write itself" 롤백 범위·partial slot-exhaustion 테스트 명시). 브랜치 로컬 전용이라 amend 안전. core.py +142 / test +287, integration 파일 커밋 트리에서 부재. push 미실행. - [new]
work/raw_block/iouring-batch-put-many-finalize.md— iouring-batch 브랜치 최종 정제 문서(batch-io=P0 와 혼동 방지용 별 파일). 두 브랜치 비교표(core 동일·plugin 유무·테스트 강도) + 본 브랜치 PR 결정 3건 기록. (코드, workspaceperf/rawblock-put-many-iouring-batch, 1fe16ba 위 미커밋 보완): (1) Phase B 롤백 보완 —_put_many_batch_io의try범위를 버퍼 빌드(Phase B)까지 확장하되write_succeeded플래그+단일 Phase D 루프 유지(batch-io 의 broad-try 안전성 획득, rollback 루프 중복은 회피 → 두 원본보다 우수). 1fe16ba 는_encode_header/_prepare_write_payload예외 시 inflight/슬롯 누수 잠재버그였음. (2) 부분 슬롯 소진 테스트 추가(..._partial_slot_exhaustion) — capacity=meta+3*slot 로 슬롯 3개만 두고 5키 put_many →[T,T,T,F,F], stored_keys 앞3개, batched_write 1회·6엔트리, 가용슬롯0 검증. 헬퍼에capacity_bytesoverride 추가. docstring 이 약속한 개별-실패 시맨틱 미검증분 보완. (3)test_raw_block_put_many_integration.py제거(git rm) — 어떤 CI 에서도 미실행(전용 raw-block job 은 3파일만 명시, 일반 job 은 rust 미빌드 importorskip skip). 로컬 보관 →work/raw_block/local_real_device_put_many_bench.py. 검증: 테스트 클론 venv+ws 소스 pytest 11 passed(rollback 회귀 포함), pre-commit 전 항목 Passed. plugin 개선(exists_many dedup 등)은 dev 독립 후속 PR 로 분리 예정. push/PR 미실행(승인 대기). - [new] (코드, workspace
perf/rawblock-put-many-iouring-batch, 1fe16ba) G2/P3 put_many 병렬화 — clean PR 브랜치 정리. basebf7d2ff(=PR #3274 head)에서 새 브랜치 생성 후 harness 산출물 중 실제 변경 3파일만 단일 커밋으로 추림:raw_block/core.py(+135) +test_raw_block_core.py(+243) +test_raw_block_put_many_integration.py(+196), 총 574 insertions. 스캐폴딩(.claude/,scripts/execute.py,phases/)은 제외(feat-0-rawblock-put-many-parallel브랜치에 보존). 테스트 클론에서 재확인 10 passed / 2 skipped(단일 batched_write·2N entry·wait 1회 계약 테스트 실통과, 통합 2종은 디바이스 미설정 skip). PR 타깃 주의: #3274 미머지라dev직접 PR 불가 — #3274 머지 후 follow-up 또는 #3274 브랜치 대상. push/PR 미실행(승인 대기). harness Step 1 비정상종료 원인은 세션 한도(429)였고 재실행으로 해소(코드 무관). - [new]
work/fdp/01_branch_audit/04_harness_metrics.md— PoCfdp_waf_stressharness 측정 지표 카탈로그. 산출 파일 9종(summary.json/measurement_*.json/records.jsonl 등) + summary.json 스키마 + WAF 계산식·waf_status분기 + records.jsonl per-record schema({qualname,latency_ms,failed}) + PLAN 단계 4 5지표(WAF/GC/p99/TTFT/Hit) vs harness 가용성 매핑 표(WAF✅/p99⚠ jsonl 파싱/TTFT❌ 2차/Hit⚠ disable_metrics off 필요) + vendor media-write counter 후보 5개(Intel/WDC/Samsung/OCP/get-log) + 단계 4 runbook 영향. audit §1(f) 셀 깊이 보강. - [mod]
work/fdp/01_branch_audit/03_fdp_implementation_audit.md— §1(f) measurement harness 행 끝에04_harness_metrics.md링크 추가. - [mod]
work/fdp/PLAN.md— (1) 단계 2 audit 명령 블록에 #6 vendor media-write counter probe(Intel/WDC/Samsung/OCP/get-log 5개 후보) + #7 xnvme probe 추가, Done 정의에 vendor counter 식별 항목 추가. (2) 단계 4 측정 지표 섹션을 PoC harness 가용성 매핑 표로 재작성(1차/2차 컬럼 분리),04_harness_metrics.md§5/§6 참조. (3) 단계 4 Run matrix를 1차(R0R3 PoC harness, no_fdp/separated/mixed) + 2차(R0/R4R7 tensormesh, FDP off/on/phase/per-worker)로 분리. R3=mixed 의미 명시(PoC config.example.yaml 근거: 모든 worker 동일 RUH set, ablation용). R2=separated와 비교로 "효과 원천이 분리인지 FDP 자체인지" 분석. - [new] (코드, workspace
feat-0-rawblock-put-many-parallel) G2/P3 put_many 병렬화 — Step 1 integration-bench.tests/v1/storage_backend/test_raw_block_put_many_integration.py추가: 실 io_uring 블록 디바이스에서 Step 0 의_put_many_batch_io검증하는 opt-in 통합 테스트 2종. (1)..._round_trip— N=32 키 batchput_many→load_many_intopayload 전부 일치 + results/stored_keys 검증. (2)..._batch_vs_sequential_bench— batch 경로(1회 submit) vs 순차 baseline(키별 put_many N회) wall-clock 을 logger/print 로 출력, 성능은 비강제(환경편차 flaky 회피), round-trip 만 assert. 디바이스 게이팅:LMCACHE_RAWBLOCK_TEST_DEVICE미설정/미존재/open 불가 시pytest.skip(기본 디바이스 없음 — 파괴적 덮어쓰기 안전장치).use_odirect=False+io_engine="io_uring"+load_checkpoint_on_init=False로 batched_write/batched_read fast path 직접 경유. 실디바이스 검증은 미수행 — 호스트의/dev/nvme0n1은 파티션(p1/p2) 보유 시스템 디스크로 판단, 전용 스크래치 디바이스 부재로 파괴 위험 회피. 디바이스 미설정 환경에서-k put_many→ 2 skip + 전체 통과, pre-commit 전 항목 통과. - [new]
work/fdp/02_smrc_env/precheck.sh— 단계 2 환경 audit 스크립트(읽기 전용). 복붙 실행용. 커널/디바이스 식별 + FDP 파라미터(nvme fdp configs→handle 수 N, status/stats baseline) + WAF 기준선(smart-logdata_units_written) + toolchain(rustc/maturin/liburing) + 권한(blkdiscard 가용) + 디스크 공간 수집. 끝에 tar/복사 명령과 Claude 정리용 핵심 확인 포인트 출력. blkdiscard·write 안 함. - [mod]
work/fdp/CONFLUENCE_FDP-PoC-검증계획.md— (1) 용어 정리에 "측정 harness" 추가, (2) §3.1 신설 "무엇을 같은 묶음에 둘 것인가 — 어디까지 실제 구현됐나" 표(통로/워커별=backend 구현, 프롬프트별·단계별=harness 전용, 측정은 셋 다 가능), (3) §5.1.5 측정 순서 명시(PoC harness 먼저 → tensormesh 나중). - [mod]
work/fdp/PLAN.md— 단계 4에 측정 순서 확정 명시: 1차 PoCfdp_waf_stressharness(통합 0, R1/R2/R3 WAF 즉시) → 2차 tensormesh 확장. audit §4/§2(f) 근거. - [new]
work/fdp/CONFLUENCE_FDP-PoC-검증계획.md— 팀 공유용(Confluence 붙여넣기) 위키 문서. 내부 전용 용어 제거(용어 정리 표 포함), FDP 제안서(서동주/한대규) 내용(WAF, 3개 placement 시나리오, preconditioning, I/O 인터페이스)을 팀 독자용으로 정리. 5단계 계획·역할분담·단계4 측정(4지표 off/on 비교)·파라미터 미확정 주의·리스크 포함. 자리표시 결과표. - [mod]
tasks/index.md— FDP-PoC 행 상태 "단계1 완료, 단계2 대기"로, 관련 문서에 팀공유 위키·precheck.sh 링크 추가, run matrix 파라미터화 비고. 마지막 갱신일 2026-06-11. - [mod]
work/fdp/PLAN.md— 단계 4 run matrix 현실화. 하드코딩 임의값(90% fill / ~30min / ramp30+steady60 / ~90min/run / 3회 평균)을 유도식으로 파라미터화:T_pre ≈ (1.5~2)·C/BW, fill은 ~100% span 후 random overwrite,T_ramp/T_steady는 dry run 실측, run 반복 수는 시간 예산÷(T_pre+T_run). 실제 숫자는 단계 2 audit(C, BW, handle 수 N)+예산 확정 후 채움. 기본은 R0/R1/R2 각 1회(평균 없음) 최소 셋, 예산 확보 시 3회 평균·R3/R4 확장. 리스크 표의 "run 3회 평균·steady≥60min"도 조건부로 완화. - [mod]
docs/notes/raw_block_pr_landscape.md— lint 정합성 수정 8건: last-fetch-check 날짜 갱신(6-05→6-11), L2 행 "P0 흡수·폐기"로 변경, Section 3 G2 bullet "P0 로컬 완료"로 갱신, Section 4 G1·G2 컬럼 P0 흡수 반영, L2 각주 업데이트, 우선순위 직관 note 갱신, Section 5 액션 아이템 정리(#3526 참조 제거).
2026-06-10 (추가)
-
[new] (코드, workspace
feat-0-rawblock-put-many-parallel) G2/P3 put_many 병렬화 — Step 0 core-batch-write.lmcache/v1/storage_backend/raw_block/core.py에_put_many_batch_io추가:put_many가 io_engine=="io_uring" & N>1 이면 분기. 4-phase(reserve-lock / flatten / submit / commit) 로 N키의 header+payload(2N entry)를 단일_write_buffers→ 단일batched_write+wait_iouring1회로 묶어 NVMe NCQ 병렬성 활용. all-or-nothing: 단일 io_uring_submit 실패 시 전 키 슬롯 free list 롤백, 부분 commit 금지. 순차put_manysemantics(이미 indexed skip-success, slot 없으면 키별 실패, 순서 보존) 보존. 플러그인(rust_raw_block_backend.py) 미수정 — base PR #3274 가 이미 io_uring+N>1 → 단일put_many라우팅.tests/v1/storage_backend/test_raw_block_core.py에 fake io_uring device 단위 테스트 6종(단일 submit 계약 / header 버퍼 길이 가드 / round-trip / already-indexed skip / 롤백 / posix 회귀) 추가 — 테스트 클론에서 10 passed, pre-commit 전 항목 통과. -
[del] (코드, workspace) 브랜치
fix/rawblock-batched-put-toctou(L2, 8860f132) 삭제 — P0로 흡수. cherry-pick 테스트 잔재(unmerged 파일) 정리 후perf/rawblock-put-many-batch-io(aad5e37e) clean 복구. -
[mod]
work/raw_block/L2-batched_submit_put_task-batching.md— 🚫 폐기·P0 흡수로 재정의. frontmatter status/branch/superseded-by 갱신 + 상단에 흡수 결정·리뷰 결론 배너 추가. 리뷰 결론: ①dedup은 멱등 core(put_many가_lock안_index/_inflight재검사) 위라 진짜 TOCTOU 아님(마이크로 최적화), ②ref 롤백은 셧다운 경로 한정. 본문 §1~9는 분리 시도 당시 기록으로 보존. -
[mod]
work/raw_block/P0-put_many-parallel-io.md— depends-on에서 L2 제거(absorbs:추가), §1.2를 "구 L2 흡수(P0 ⊃ L2)"로 재작성, §7 "단일 PR(plugin+core, 구 L2 ①② 포함)"로, 변경 로그에 흡수 확정 행 추가. -
[mod]
work/wiki/raw-block-put-many-write-path.md— 상태표 L2 별도 PR 제거(단일 PR), §5를 "dedup 일괄화(비용 절감, 정확성 수정 아님 — 멱등 core)" + "셧다운 경로 ref 정리"로 정직하게 재프레이밍. -
[mod]
tasks/index.md— L2 행 🚫 폐기(흡수, 브랜치 삭제)로 변경, P0 행에 "dispatch batching + 구 L2 흡수, 단일 PR, 테스트 36" 반영. 마지막 갱신일 갱신. -
[new]
work/fdp/PLAN.md(+ 하위 5개 디렉터리01_branch_audit/02_smrc_env/03_build_test/04_measure/05_design) — FDP PoC(DongDongJu/LMCache:fdp-waf-agentic-replay-poc) smrc 검증 + raw_block/file backend 개선 계획서. 단계 0/1/5는 Claude(로컬), 2/3/4는 사용자(smrc) 분담. 단계 1에서 ankit-sam/LMCache#1 포함 여부 검증 + FDP 구현 7카테고리 audit 산출. -
[new]
work/fdp/README.md— 작업 디렉터리 인덱스. 단계별 산출물 트리 + 단계 1 핵심 결론 요약. -
[new]
work/fdp/01_branch_audit/01_codebase_map.md— PoC 코드베이스 지도. 39 커밋을 (1) raw_block MP L2 adapter 인프라 30개, (2) FDP/io_uring_cmd 코어 3개, (3) agentic replay + FDP WAF stress harness 6개로 분류. 95 파일 카테고리별 정리(raw_block / blkio 신규 backend / agentic harness / fdp_waf_stress / tests / docs). FDP write 호출 그래프 (config →_select_fdp_ruh→_write_directive_for_ruh→ Rust pwrite →cmd.cdw13 = dspec << 16→ NVMe write). -
[new]
work/fdp/01_branch_audit/02_ankit_sam_pr1_diff.md— ankit-sam/LMCache#1 ↔ PoC 비교. 4지선다 결론: (c)+(d) 혼합. Commit SHA·patch-id 둘 다 0건 매치. 파일 overlap 2개. NVMe helper 7개 함수(nvme_uring_cmd_prep등)는 byte-identical(ankitrust_uring_cmd인프라를 squash 흡수)이지만 FDP 사용자 API는 독립 — PoC = N-RUH list + data/metadata 분리, ankit#1 = rank-based 단일 ID +fetch_fdp_status. -
[new]
work/fdp/01_branch_audit/03_fdp_implementation_audit.md— FDP 구현 7카테고리(a-g) Y/N 표 + 빈자리. (a) placement 정책 코어=worker단위, prompt/phase는 harness만. (c) file backend FDP 완전 미구현 — 단계 5 새 영역. (d)fetch_fdp_status미포함, ankit#1 강점. (f)benchmarks/fdp_waf_stress/run_fdp_waf_stress.py1456줄 — modemixed/separated/no_fdp비교. 단계 4에서 그대로 활용 후보. 단계 5 PR-A~PR-E 사전 스케치. -
[new]
work/fdp/01_branch_audit/placement_policy_notes.md— placement_id 결정 코드 path 요약. 3단 fallback (obj.metadata.fdp_placement_rank>kv_rank>>16> legacyworker_id) →worker_index % N→fdp_data_ruh_ids[idx]. metadata는 blake2b digest로 분배. harness layer가 storage_class별 RUH list를 결정하는 구조. -
[new]
work/fdp/01_branch_audit/branch_diffstat.txt,dev_base_commit.txt—git diff --stat원본 + dev 분기 시점(f8ffd8f0). -
[mod]
work/raw_block/L2-batched_submit_put_task-batching.md— dispatch batching 언급 제거, pure correctness fix(TOCTOU + ref leak)로 재정의, P0 없이 독립 PR 가능으로 §9 업데이트. -
[mod]
work/raw_block/P0-put_many-parallel-io.md— dispatch batching(_submit_put_many) P0 소유로 이전, plugin.py를 target-files에 추가, 독립 PR(#3274·L2 선행) 구조로 §7 재정리. -
[mod]
work/wiki/raw-block-put-many-write-path.md— 상태 표 L2/P0 분리 반영, §3에 dispatch batching도 P0 포함 설명 추가, §5 헤더를 "L2 별도 PR" 명시로 수정. -
[mod]
tasks/index.md— v3 외 raw_block 후보 섹션에 FDP-PoC 행 추가. PLAN.md 링크. -
[mod]
contributors.md— 한대규 FDP 상태 업데이트: "PoC 미공개" → rank-based 구현 완료 (ankit-sam/LMCache#1,priv/dg/rust-uring-cmd-260508). file backend FDP는 미구현(우리 몫) 명시. -
[mod]
tasks/v3_standalone_items.md— 중복 금지 영역 FDP 항목 갱신: raw block I/O 레이어 daegyu 완료, file backend는 빈 자리임을 명시. -
[new]
work/wiki/PR-3274-io_uring-and-uring_cmd.md— 팀 위키 #3274 통합본. 기존io_uring-raw-block-infra.md+raw_block-io_uring-cmd.md합본 + 코드 크로스체크로 사실 정정 (slot write도 io_uring 모드에서can_batch=True로 동작 —header_bytes가block_align배수 강제이고 io_uring 경로에서 헤더payload_len=hdr_total로 패스). 후속 작업 연결(M3, P0/L2, FDP 활성화)은 사용자 지시로 본문에서 제외. -
[del]
work/wiki/io_uring-raw-block-infra.md,work/wiki/raw_block-io_uring-cmd.md— 위 통합본으로 합쳐 중복 제거. 슬롯 헤더 정렬 불일치 주장은 코드 크로스체크 결과 사실과 달라 통합본에서 정정. -
[mod]
work/wiki/raw-block-put-many-write-path.md— 통합본으로 링크 갱신, 헤더can_batch=False가정 표현 정정 (실제로는 True, put_many가 키마다_write_buffers를 따로 호출하는 것이 직렬성 원인). -
[new]
work/wiki/PR-3274-QnA.md— PR #3274 위키 학습 Q&A 정리. 8개 질문(3엔진 비교, SQE 사양 출처, can_batch 동작, Big/Standard ring, NVMe NCQ, put_many 직렬 설계 이유 등) 개념 참고용.
2026-06-10
- [new]
work/wiki/io_uring-raw-block-infra.md— 팀 위키용 #3274 io_uring 인프라 정제 문서._write_buffers/_read_buffersdispatcher,can_batch조건(헤더 정렬 불일치로 슬롯 write는 batch 못 탐),batched_write/wait_iouring/fixed buffer, 호출자별 현황 표. private 용어 제거. put_many 최적화 문서의 전제. - [new]
work/wiki/raw-block-put-many-write-path.md— 팀 위키용 put_many 쓰기 경로 최적화(L2+P0) 정제 문서. dispatch만 묶으면 regression →_put_many_batch_io(2N SQE 한 번 제출) → NCQ 병렬. 4-way 시뮬레이션 결과 + 순환 한계 명시 + 실측 계획 + correctness fix(dedup TOCTOU/누수) 곁들임. L1 우회로 제외(사용자 지시). 패턴 라벨 P0→io_uring으로 일반화. - [new]
tasks/nvme_raw_block_feature_discovery.md— NVMe raw_block feature 발굴 통합본(아래 두 노트 합본): TRIM 계열(N1 런타임 discard)·MP 빈틈(MP-A/B/C)·TRIM 외 목표정합 feature(버킷 A/B/C) + 점유 지도. 추천 = B1(L2/TTFT 텔레메트리)·A3(RU-aligned geometry)·N1(런타임 TRIM, 상윤 조율). FDP placement(A1/A2)는 daegyu94 레인→착수금지. - [del]
docs/notes/nvme_trim_and_mp_gaps.md,docs/notes/feature_candidates_beyond_trim.md— 위 통합본으로 합쳐 중복 제거(내용 전량 보존). - [mod]
tasks/index.md— 분석 백그라운드의 두 행(TRIM·feature 후보)을 통합본 한 행으로 교체. - [mod]
tasks/index.md— L2/P0 브랜치 분리 + rebase 반영. 단일perf/l2-p0-batch-put→ 독립 2개:fix/rawblock-batched-put-toctou(L2 correctness),perf/rawblock-put-many-batch-io(P0). #3274 새 base(bf7d2ff= dev 머지본)로 rebase 충돌 0건, 테스트 통과(L2 29 / P0 7). 두 PR 순서 무관(파일 분리: plugin vs core). - [mod]
work/raw_block/P0-put_many-parallel-io.md§7 + L2 노트 — 브랜치명 분리 갱신. #3274는 아직 OPEN(미머지), 6/9 ankit-sam이 최신 dev를 PR 브랜치에 머지하여 base 갱신됨. dev 단독엔 io_uring 코드 부재 →bf7d2ff기준 필수. #3608object_group_id변경은 make_object_key 유틸이 흡수, P0 영향 없음.
2026-06-08 (5차 추가)
- [mod]
work/raw_block/P0-put_many-parallel-io.md— P0 구현 완료 기록(§3:_put_many_batch_io4단계 + correctness 테스트 3개), 4-way 시뮬레이션 결과(§4: N=100/lat=50µs batch+P0 fanout −28%), 시뮬레이션 순환 한계 명시(§4.3: NCQ 병렬성을 모델 가정으로 깖), 실측 검증 계획(§5: 실 NVMe + bench_put_many_real_nvme.py, 판정 기준 >10%), PR 구성(§7). branchperf/l2-p0-batch-put.
2026-06-08 (4차 추가)
- [mod]
work/raw_block/V1-validate-batched-read.md— §6 단계 3 벤치마크 결과 전면 확충. 슬롯 수 4종(100/200/500/1000) × 7 iter 원시 데이터 표 추가. 이상치(N=200 iter4 seq, N=1000 iter7 bat) 원인 분석, 요약 표, 분석 5항목(선형성·분산·page cache에서 빠른 이유·1000슬롯 이상치·측정 한계) 추가.
2026-06-08 (3차 추가)
- [mod]
work/raw_block/V1-validate-batched-read.md— §6 성능 검증을 4단계 체계로 전면 재작성. 단계 1(단위 테스트 항목 표), 단계 2(Rust lib.rs 소스 분석: GIL 해제 구간·std::mem::take 드레인·단일 submit() 병렬성 근거·O_DIRECT 정렬 검사 조건), 단계 3(tmpfile 벤치 환경·측정 방법론·원시 결과·분석 4항목), 단계 4(실 NVMe 환경 요건·준비 절차·정확성 검증 방법·성공 기준·이론 예측값 계산 포함).
2026-06-08 (2차 추가)
- [mod]
work/raw_block/V1-validate-batched-read.md— 상태 "설계 중" → "로컬 구현 완료". §5 구현 완료 내역(변경 파일·핵심 코드·테스트 7개) 추가, §6 검증 계획 → 계획+결과로 갱신(Rust 소스 분석·벤치마크 측정: 200슬롯 5.8×/500슬롯 3.9×/NVMe 이론 94×), §7 미결사항 해소 현황 표로 갱신, §8 제출 조건 명시. - [mod]
tasks/index.md— V1 상태 "대기" → "로컬 구현 완료" + 브랜치·speedup 요약·다음 단계 비고 추가. 마지막 갱신 날짜 갱신.
2026-06-08
- [mod]
work/raw_block/L2-batched_submit_put_task-batching.md— §9 측정 결과 추가 + 판정 업데이트. dispatch 벤치마크(lat=50µs NVMe 구간 fanout 60~110% 빠름) → "PR drop" 아닌 "P0와 함께 단일 PR" 결정. §3.2 "L3" 레퍼런스 → P0로 수정. - [new]
work/raw_block/P0-put_many-parallel-io.md— io_uring 머지 후 착수할 put_many 내부 N-SQE 배치 submit 계획. L2와 함께 단일 PR 제출 계획, header 정렬 해결 방안(합산 버퍼) 포함. - [new]
benchmarks/storage_backend_io/bench_dispatch_patterns.py— fan-out vs batch dispatch 패턴 벤치마크 스크립트. - [mod]
tasks/index.md— L1 🚫 폐기(bench <1% gain, PR drop), L2 상태 "P0 합산 후 PR", P0 신규 행 추가, v3 외 후보 테이블에 비고 컬럼 통일. 마지막 갱신 날짜 2026-06-08. - [mod]
tasks/v3_standalone_items.md— M1 단기/장기 구분 제거, P0+L2 PR에 흡수 명시. - [mod]
tasks/index.md— M1 비고 "단독 PR 없음, P0+L2 PR에 흡수"로 갱신. - [new]
docs/notes/raw-block-put-many-lock-bench.md— put_many 4N→2N 락 최적화 벤치마크 결과. NVMe 현실 구간(50µs) 기준 이득 <1%, PR drop 결정. - [mod]
docs/notes/raw_block_pr_landscape.md— #3526(L1) PR drop 반영. 매핑 테이블 상태 갱신. - [mod]
docs/notes/raw_block_priority.md— L1 항목 drop 처리, 관련 주의사항 무효화.
2026-06-06
- [new]
work/raw_block/V1-validate-batched-read.md— V1 구현 계획:_validate_loaded_entriesio_uringbatched_read병렬화 설계 (aligned buffer 전략,_read_slot_headers_batched헬퍼, POSIX fallback, 테스트 계획, PR #3274 의존성) - [mod]
tasks/index.md— V1 행에 구현 계획 문서 링크 추가, 마지막 갱신 날짜 업데이트
2026-06-05
- [new]
docs/notes/raw_block_pr_landscape.md— 2026-06-05 시점 열린 raw_block 관련 PR(12개) 목록, 우선순위 항목(T1/L1/L2/L3/P3/D1/D2/B2/P1/D3) ↔ PR 매핑, #3274 가 커버한 io_uring/NVMe 항목과 남은 한계, #3274 와 겹치지 않는 미착수 Gap(G1~G5) 정리. L2 는 priv/ny/legacy_batch_put 로컬 구현됨(PR 미제출)으로 표기 - [mod]
tasks/index.md— V1(_validate_loaded_entriesbatched_read, 나), V2(fg/bg 검증 분리, 대규님) 행 추가; Cleanup ✅ 머지 완료, A1/L3 PR 리뷰 중(#3494) 상태 갱신; 분석 백그라운드에 raw_block_pr_landscape 링크 추가
2026-06-04
- [mod]
work/s2_checkpoint_overflow/s2_verification.md— #3449(zlib 압축) 반영 §0 갱신 노트, §3 임계점 재계산 표, §9 단계 전략 변경 (단계 1 폐기, HC SSD 전용 단계 2만 유지) - [mod]
work/s2_checkpoint_overflow/s2_one_pager.md— #3449 반영 재평가 섹션 추가, 질문 갱신 (Std SSD 해소 → HC SSD 영역 확인으로 전환) - [mod]
personal/daejun_question_draft.md— #3226 기준 → #3449 기준으로 질문 전면 갱신 - [mod]
tasks/v3_standalone_items.md— S2 재평가 결과 반영(HC SSD만 잔존), M1/M2 #3274 머지 임박 메모 추가 - [mod]
tasks/index.md— M1/M2 비고 갱신(#3274 머지 임박), 마지막 갱신 날짜 → 2026-06-04, 분석 백그라운드에 ci_test_coverage.md 링크 추가 - [mod]
refs/pr3274_iouring_nvme.md— 상태 머지 임박으로 갱신, 6/1 APPROVED / 6/3 ApostaC doc 코멘트 반영, §8 리뷰 피드백 표 갱신, §9 M1/M2 착수 연결 섹션 신설 - [new]
docs/notes/ci_test_coverage.md— PR CI 커버리지 구조, raw_block 미커버 경로, 실장 테스트 필요 조건 정리
2026-06-02
- [new]
work/reviews/cr-c7a90bfa-rawblock-put-many-followup.md— L1 후속 working-tree 보강 4건 재검토 (cr-5a27732f 후속) - [new]
work/raw_block/L1-put_many-lock-coalesce.md—put_many락 4N→2N 축소 변경 노트 (L1, implemented) - [new]
work/raw_block/L2-batched_submit_put_task-batching.md— legacybatched_submit_put_task진짜 배치 재구성 변경 노트 (L2, implemented) - [new]
work/raw_block/L3-rust-raw-block-batched-remove.md—RustRawBlockBackend.batched_remove락 N→1 override 변경 노트 (L3, implemented) - [new]
work/reviews/디렉토리 — PR 리뷰 노트 모음 (raw_block 관련 6개 리뷰) - [new]
work/reviews/356270ae-harden-raw-block-checkpoint-recovery.md - [new]
work/reviews/9fc5a901-rawblock-delete-toctou.md - [new]
work/reviews/cr-2a031316-rawblock-batched-remove.md - [new]
work/reviews/cr-356270ae-harden-raw-block-checkpoint-recovery.md - [new]
work/reviews/cr-5a27732f-rawblock-put-many-lock-coalesce.md - [new]
work/reviews/cr-93403c0f-rawblock-batched-put-task-batching.md - [mod]
tasks/index.md— A1 행에 L3 변경 노트, raw_block 관련 PR 리뷰 노트 디렉토리 링크 추가
2026-06-01
- [new]
daily_reports/디렉토리 — 일일 업무일지 모음 (주차 1파일 누적) - [new]
daily_reports/README.md— 명명 규칙, 양식, weekly와의 관계 - [new]
daily_reports/2026-W23.md— W23 주차 파일 (6/1 첫 일자 섹션 작성) - [move]
daily_reports/→/home/ny/2026/reports/daily/— 업무일지를 연도 단위 개인 공간으로 분리 (private/는 LMCache 작업 노트만 유지) - [del]
daily_reports/(이동 후 빈 디렉토리 제거) - [new]
weekly_reports/디렉토리 — 주간보고 모음 - [new]
weekly_reports/README.md— 명명 규칙 + 양식 + 인덱스 - [new]
weekly_reports/2026-W21_0518-0524.md— 합류 초기 (방향/로드맵) - [new]
weekly_reports/2026-W22_0525-0531.md— 아키텍처 분석 + 첫 PR(#3445) + A1/S2 설계 - [new]
weekly_reports/2026-W23_0601-0607.md— A1 commit/push + 디렉토리 정리 - [move]
weekly_reports/*→/home/ny/2026/reports/weekly/— 주간보고도 연도 단위 개인 공간으로 통합 (daily와 같은 위치) - [del]
weekly_reports/(이동 후 디렉토리 제거) - [new]
CLAUDE.md—private/작업 룰 (인덱스 동기화 절차, CHANGELOG 갱신 의무, 적용 범위) - [mod]
tasks/index.md— "관련 문서" 컬럼 추가 (각 task에 출처/근거 문서 교차참조), "v3 외 raw_block 후보"·"분석 백그라운드" 섹션 신설, 상단에 유지보수 룰 한 줄 추가 - [move]
repro_s2_*.py(루트 3개) →work/s2_checkpoint_overflow/repro_*.py(s2_prefix 제거) - [move]
work/s2_*.md,work/s2_repro_outputs/→work/s2_checkpoint_overflow/ - [move]
work/candidate_a1_batched_remove.md,work/pending_raw_block_core_cleanup.md→work/raw_block/ - [move]
work/TODO.md→tasks/todo_ssd_io_analysis.md - [move]
raw/FDP SSD for LMCache→raw/fdp_ssd_for_lmcache_raw.md(trailing space 제거 + .md) - [move]
raw/LMCache Disk TCO Analysis→raw/lmcache_disk_tco_analysis_raw.md(.md 추가) - [move]
personal/아키텍처 리뷰→personal/아키텍처_리뷰.md(.md 추가) - [del]
docs/notes/(빈 디렉토리 제거) - [new]
tasks/index.md— 아이템(H1/H2/M1/M2/S1/S2/A/B/C/Task1~5) 한눈에 보는 레퍼런스 인덱스 - [mod]
tasks/s2_todo.md,tasks/v3_standalone_items.md,personal/daejun_question_draft.md,contributors.md,work/s2_checkpoint_overflow/*.md— 이동된 경로 참조 업데이트
2026-05-29
- [new]
work/s2_verification.md— checkpoint overflow 종합 분석 (9섹션) - [new]
work/s2_one_pager.md— Daejun 전달용 executive summary - [new]
work/s2_before_after_3226.md— PR #3226 before/after 코드 비교 (9항목) - [new]
work/s2_repro_outputs/midscale_output.txt— midscale 재현 실행 출력 - [new]
repro_s2_checkpoint_overflow.py— 메커니즘 재현 (60 엔트리, fake device) - [new]
repro_s2_midscale.py— 선형 스케일링 재현 (4 케이스) - [new]
repro_s2_default_config.py— real-default 재현 스크립트 (미실행) - [new]
tasks/s2_todo.md— S2 task phase plan (P1~P5) - [new]
work/candidate_a1_batched_remove.md— batched_remove lock overhead 분석 - [new]
work/pending_raw_block_core_cleanup.md— RawBlockCore 정리 PR 예정
2026-05-26
- [new]
refs/notes/raw_block_line.md— raw_block 라인 종단 분석 (L1~L4) - [new]
refs/notes/plugin_pipeline.md— adapter↔plugin 연결 메커니즘 - [new]
refs/notes/l2_adapters_contract.md— L2Adapter 추상 메서드·factory 분기 - [new]
refs/notes/l2_adapters_overall.md— L2 어댑터 전체 그림 - [new]
refs/notes/l2_adapters_overall_KR.md— 위 한국어 버전 - [new]
refs/lmcache_overview.md— LMCache 아키텍처 개요 - [new]
refs/fdp_ssd_for_lmcache_ko.md— FDP SSD 분석 (한국어) - [new]
refs/lmcache_disk_tco_analysis_ko.md— Disk TCO 분석 (한국어) - [new]
refs/pr3274_iouring_nvme.md— PR #3274 io_uring NVMe 분석 - [new]
tasks/todo_ssd_io_analysis.md— SSD I/O 스택 분석 계획 (TODO 1~8) - [new]
tasks/v3_standalone_items.md,v2_benchmark_tracing.md,v1_original_roadmap.md,task1_impl_plan.md - [new]
personal/daejun_question_draft.md,personal/LMCache_아키텍처_한국어.pdf,personal/rawblock_end_to_end_review.md - [new]
contributors.md,goal.txt