| NEW | P2P read-only adapter의 store success semantics 정리 | MP | P2PL2Adapter.submit_store_task()는 실제 저장 없이 L2StoreResult(True, 0)를 즉시 반환한다. default store policy가 모든 adapter를 store target으로 쓰고, skip_l1 정책은 성공 후 L1 삭제를 수행하므로 read-only adapter capability가 필요할 수 있다. 다만 P2P는 storage/NVMe 주력 영역은 아니다. | 코드: lmcache/v1/distributed/l2_adapters/p2p_l2_adapter.py:186, lmcache/v1/distributed/storage_controllers/store_policy.py:144. 관련 최근 PR: #3740, #3762 |
| NEW | L2 adapter capability bit / descriptor 확장 | MP | AdapterDescriptor는 index/config만 제공한다. store 가능, lookup-only, capacity-aware, latency class 같은 capability를 policy가 볼 수 없어 P2P 같은 read-only adapter를 정책적으로 제외하기 어렵다. | 코드: lmcache/v1/distributed/storage_controllers/store_policy.py:22 |
| 기존 | F2 uring_cmd multi-page read alignment/bounce 근본 수정 | Both | #3812/#3841이 read batching과 temp buffer 일부를 다루지만 recovery _load_meta_payload와 일반 multi-page read의 비정렬 PRP/EINVAL gap은 남아 있다. | status snapshot F2, follow-up, #3812, #3841 |
| 기존 | B1 L2/TTFT runtime latency histogram | MP | 현재 L2MetricsSubscriber는 counters 중심이고 L2ThroughputSubscriber는 GB/s histogram이다. #3272는 offline flamegraph profiling이라 runtime latency/TTFT 증명과 구분된다. | tasks/index B1, latency plan, #3272 |
| 기존 | Task5 device-aware store/prefetch policy | MP | 현재 store policy는 모든 adapter에 저장하고, prefetch policy는 lowest-index adapter를 고른다. 최근 Q2 roadmap도 advanced L2 policy / dynamic prefetch admission을 요구한다. B1 telemetry가 선행이면 효과를 증명하기 쉽다. | tasks/index Task5, #2923, 코드: prefetch_policy.py:129, store_policy.py:144 |
| 기존 | A3 RU-aligned raw_block slot geometry | Both | RawBlockCore layout은 metadata 뒤에 slot_bytes 단위로 연속 배치한다. FDP RU/erase block boundary 정렬 config는 없다. #3689 multi-device sharding과 별개다. | nvme discovery A3, 코드: lmcache/v1/storage_backend/raw_block/core.py:1438 |
| 기존 | N1 runtime discard/TRIM on slot free | Both | 현재 delete_many()는 index에서 제거하고 free slot list에 넣을 뿐, free된 device byte range에 discard를 발행하지 않는다. #3519는 init-time discard만 다룬다. | nvme discovery N1, #3519, 코드: core.py:836 |
| 기존 | P0-B padded O_DIRECT write도 batched_write 사용 | Both | #3636은 submit batching만 다루고 padded O_DIRECT는 Rust API가 payload_len을 모르는 문제로 per-entry fallback을 둔다. P0-B local 구현 완료로 기록됨. | tasks/index P0-B, #3636 |
| 기존 | F1 write coalescing / writev | Both | #3636 이후에도 header/payload는 key당 2 SQE다. writev로 key 내부 header+payload를 2 commands에서 1 command로 줄이는 후속. | status snapshot F1, coalescing plan |
| NEW | Variable-size serde exact-size support를 FS/mock 밖으로 확장 | MP | #3796은 CacheGen serde와 get_object_sizes() hook을 FS/mock에 추가한다. S3/HFBucket/native connector exact-size reporting은 후속으로 남는다. | #3796, 코드: serde_wrapper.py:241, s3_l2_adapter.py:427 |
| NEW | GCS/Azure MP L2 adapter parity | MP | #3854와 #3686은 non-MP remote connector만 추가하고 MP GCS/Azure L2 adapter는 명시적으로 follow-up으로 남긴다. 현재 MP object-store L2는 S3만 first-party로 보인다. | #3854, #3686, 코드: s3_l2_adapter.py:427 |
| 기존 / 점유 | MP raw_block multi-device sharding | MP | private MP-C로 추적하던 빈틈이지만, #3689가 device_paths와 per-rank sharding을 구현 중이다. base sharding은 중복이다. | nvme discovery MP-C, #3689 |
| NEW | raw_block multi-device 후속: per-device health/capacity/latency-aware sharding | MP | #3689는 kv_rank.local_rank % len(device_paths) 형태의 단순 sharding이다. PR merge 후 장치별 capacity, latency, health, queue-depth를 반영한 routing/rebalance가 후속 gap으로 남는다. | #3689 |
| 기존 | MP raw_block fixed-buffer registration hook | MP | RawBlockL2Adapter는 io_uring이어도 fixed-buffer registration이 disabled라고 warning한다. MP allocator path와 연결되는 zero-copy hook이 남아 있다. | status snapshot G3/G4, 코드: raw_block_l2_adapter.py:347 |
| NEW | io_uring queue depth / sysfs autotune 또는 preflight | Both | RawBlockCoreConfig.iouring_queue_depth는 수동 config이고 Rust ring도 전달값 그대로 build한다. device queue depth, MDTS, sysfs limits를 읽어 추천/검증하는 preflight는 없다. M2 setup flag와 인접하지만 autotune/preflight는 별도 후보로 볼 수 있다. | 코드: core.py:149, rust/raw_block/src/lib.rs:965 |
| 기존 | fs_connector O_DIRECT + save_chunk_meta padding | In-process | save_chunk_meta가 true이면 metadata가 block size에 맞지 않아 O_DIRECT를 꺼버린다. SSD real-disk benchmark에 직접 영향이 있다. | tasks/index Task3, 코드: fs_connector.py:100 |
| NEW | LocalCPU batched_allocate eviction accounting gap | Both | batched_allocate eviction path에 "batched allocate is not supported through batched_remove; usage tracking not supported" TODO가 있다. #3634의 admission visibility와 인접하지만 직접 중복은 아니다. | #3634, 코드: local_cpu_backend.py:788 |
| 기존 | H1/H2 free slot set/FIFO | Both | _free_slots는 list membership O(n)과 LIFO reuse를 유지한다. FDP/wear 관점의 작은 선행 작업. | tasks/index H1/H2, 코드: core.py:1478 |