Skip to content

chore(tests): align evict lmcache sizing#82

Merged
GentleCold merged 6 commits into
masterfrom
feat/transfer-staging-gfd
Jun 13, 2026
Merged

chore(tests): align evict lmcache sizing#82
GentleCold merged 6 commits into
masterfrom
feat/transfer-staging-gfd

Conversation

@GentleCold

Copy link
Copy Markdown
Owner

Summary

  • Fold skip_l2 into the iouring transfer path and remove the separate memory-only transfer layer.
  • Keep pinned_pool.py in its current iouring package location.
  • Align evict-mode benchmark sizing so LMCache uses the same derived L1 target as DaseR instead of expanding by the eviction watermark.

Why

The transfer stack should not maintain two independent mem-to-GPU paths. In no-evict runs, skip_l2 now means the iouring backend keeps the L1 path and skips SSD setup. In evict comparisons, LMCache and DaseR now receive matched L1 sizing so benchmark results are easier to interpret.

Validation

  • pytest tests/transfer/test_iouring_skip_l2_transfer.py tests/transfer/test_tiered_iouring_transfer.py tests/server/test_ipc_server.py tests/transfer/test_cpu_imports.py -q
  • pytest tests/server/test_main_cli.py tests/test_config.py tests/connector/test_daser_connector.py::test_worker_transfer_ready_allows_skip_l2_without_store_path tests/connector/test_daser_connector.py::test_runtime_config_ready_allows_skip_l2_without_store_path -q
  • pytest tests/transfer tests/server tests/test_config.py tests/connector/test_daser_connector.py -q
  • pytest tests/unit/test_benchmark_utils.py tests/unit/test_benchmark_unified_utils.py -q
  • Evict benchmark completed with lmcache_l1_gb=112 for derived L1 111.09 GiB: /data/zwt/daser_bench/vllmbench_10000x1_correctness/run_20260614_002723

Benchmark Notes

  • First evict attempt on GPU 2 failed before workload because an unrelated process held about 34 GiB GPU memory. The successful rerun used GPU 0.
  • Successful evict run summary:
    • LMCache warm TTFT mean: 1472.55 ms, backend hit rate: 0.8564
    • DaseR prefix warm TTFT mean: 2872.59 ms, backend hit rate: 1.0
    • Cold TTFT means were close: LMCache 7973.94 ms, DaseR 8095.25 ms
  • Large benchmark artifacts were cleaned after the run; results and logs were kept.

- Route skip_l2 through TieredIOUringTransferLayer instead of a separate memory backend.

- Disable SSD, io_uring, and L2 persistence resources inside iouring skip_l2 mode.

- Migrate L1-only behavior tests and documentation to the iouring skip_l2 path.
- Stop expanding LMCache evict L1 sizing by the eviction watermark

- Use the same derived L1 byte target for DaseR and LMCache benchmark runs

- Update benchmark docs and unit tests for the equalized sizing policy
- Preserve non-overlapping L1 fragments during skip-l2 overwrites

- Avoid partial-tail in-place writes past the cached L1 slice

- Add an LMCache quiescence timeout to prevent benchmark hangs

- Cover skip-l2 overwrite and LMCache wait edge cases
- Add the LMCache checkout ahead of DaseR in LMCache benchmark subprocess PYTHONPATH

- Pass kv_connector_module_path for the LMCache MP connector

- Cover LMCache benchmark connector and import path selection
- Add a benchmark shim connector name that avoids vLLM's built-in registry entry

- Route the shim to the sibling LMCache checkout connector

- Cover the non-conflicting connector name in benchmark tests
@GentleCold
GentleCold marked this pull request as ready for review June 13, 2026 18:47
@GentleCold
GentleCold merged commit ea30752 into master Jun 13, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant