[Perf][Core] Reduce free KV cache queue overhead by NickLucche · Pull Request #60269 · vllm-project/vllm · GitHub
Skip to content

[Perf][Core] Reduce free KV cache queue overhead - #60269

Merged
NickLucche merged 3 commits into
vllm-project:mainfrom
NickLucche:perf/free-kv-cache-queue
Oct 8, 2026
Merged

NickLucche merged 3 commits into
vllm-project:mainfrom
NickLucche:perf/free-kv-cache-queue

Conversation

@NickLucche

@NickLucche NickLucche commented Oct 6, 2026 •

Copy link
Copy Markdown
Member

Overview

Reduce Python overhead in FreeKVCacheBlockQueue by reading block links and queue sentinels once into local variables, reusing them for validation and link updates, and handling popleft_n(1) inline. The intrusive doubly linked list, eviction order, detached-block link clearing, and existing error checks are preserved.

Claims

  • Singleton allocation/free cycles take about 20% less time on GB300's Grace CPU and 17% less time on Xeon Platinum 8562Y+, with CPython 3.12.13.
  • Single pop/append and remove/append cycles also improve; larger batches are mostly unchanged.
  • These are isolated queue measurements. End-to-end serving performance and model output evaluations have not been measured.

Validation

The benchmark compares the original and modified class definitions in separate namespaces using the same actual slotted KVCacheBlock class. It measures repeated allocation/free cycles, excluding setup. Both hosts use CPython 3.12.13, one pinned CPU, warmup, randomized baseline/candidate order, pools of 2,048 and 100,000 blocks, and 11 fresh processes with 9 samples per case. A separate 9-process run confirms singleton/two-block batches and removal across two alternating shuffled block orders.

For 100,000 blocks, times are nanoseconds per complete cycle. Percentages are time reductions, computed from the median of per-process candidate/baseline ratios; intervals bootstrap those process ratios. Baseline and modified times are independently aggregated medians.

Cycle Grace original → modified Grace time reduction (95% interval) Xeon original → modified Xeon time reduction (95% interval)
popleft_n(1) + append_n 313 → 252 ns 20.3% (19.8–20.6%) 296 → 247 ns 17.1% (15.7–19.0%)
popleft() + append() 203 → 172 ns 15.3% (14.8–15.5%) 218 → 192 ns 11.7% (10.9–12.7%)
Hot-block remove() + append() 177 → 159 ns 10.4% (10.1–10.7%) 181 → 169 ns 6.4% (5.7–6.7%)
Alternating shuffled removal/append, confirmation run 343 → 319 ns 4.8% (2.3–6.8%) 246 → 226 ns 8.7% (6.9–9.2%)
popleft_n(2) + append_n 359 → 352 ns 1.9% (1.1–2.4%) 346 → 361 ns −4.6% (−5.3 to −3.5%)
popleft_n(8) + append_n 642 → 634 ns 1.4% (0.4–2.2%) 716 → 719 ns −0.5% (−5.1 to 1.1%)
popleft_n(32) + append_n 1,779 → 1,757 ns 1.2% (0.6–1.4%) 2,152 → 2,121 ns 1.6% (1.2–2.8%)
popleft_n(128) + append_n 6,409 → 6,410 ns 0.0% (−0.4 to 0.9%) 7,843 → 7,874 ns −0.4% (−5.2 to 0.6%)
Synthetic mix: 90% singleton batches 348 → 294 ns 15.5% (15.0–15.6%) 331 → 295 ns 11.0% (9.5–11.6%)

The confirmation run found 20.1% less time for singleton batches on Grace and 17.6% on Xeon. Two-block batches improved by 1.1% on Grace but regressed by 3.6% on Xeon. The synthetic mix contains 90 one-block, 5 two-block, 4 eight-block, and 1 thirty-two-block allocations in a shuffled order; it is not a serving workload.

Hardware: ARM Neoverse V2 / Grace on a GB300; Intel Xeon Platinum 8562Y+

Correctness and static checks:

.venv/bin/python -m pytest tests/v1/core/test_prefix_caching.py \
  tests/v1/core/test_single_type_kv_cache_manager.py \
  tests/v1/core/test_kv_cache_utils.py -q
.venv/bin/pre-commit run --files vllm/v1/core/kv_cache_utils.py \
  tests/v1/core/test_kv_cache_utils.py
.venv/bin/pre-commit run mypy-3.12 --hook-stage manual \
  --files vllm/v1/core/kv_cache_utils.py tests/v1/core/test_kv_cache_utils.py

On the clean PR branch based on upstream main: 389 passed; all applicable pre-commit hooks and mypy-3.12 passed.

The benchmark also validates each implementation against a Python list model for 60,000 randomized operations before timing. It checks ordering, counts, forward/backward links, detached links, prepend/append, and cursor iteration after every operation. Both implementations passed on Grace, Xeon, and local ARM macOS. Nine invalid-operation comparisons also preserved exception types/messages and queue state. The added pytest covers complete draining and refilling for batches of 1, 2, and 16. The existing tests/v1/core suites are covered by Buildkite.

Full benchmark harness, raw samples, and reproduction commands: benchmark code, raw samples, and reproduction commands. No third-party dependencies are needed for the isolated benchmark. The queue and block class definitions are unchanged between the measured baseline and the PR base commit.

Details

Normal allocations use popleft_n(), while remove() is used when touching a cached block whose reference count is zero. The singleton path avoids range() iteration and growing the return list with append(). For example, remove() reads block.prev_free_block and block.next_free_block into local variables, then uses those same references for the validity check and to reconnect the neighboring blocks. Previously, those steps repeatedly accessed the attributes on block. Similarly, popleft() and the append methods reuse local references to the head or tail sentinel. This reduces Python attribute accesses; it does not add a cache or change KV-cache behavior. This small path is inlined because calling popleft() adds function-call and validation overhead; it preserves the original bulk method's checks and mutations.

The singleton branch is a workload-dependent tradeoff: two-block batches regress by approximately 3–5% on Xeon, although they improve slightly on Grace. Larger batches show little change. This PR deliberately claims only the measured queue effects; no end-to-end throughput, accuracy, or model-output claim is made.

Duplicate-work checks searched open PRs for FreeKVCacheBlockQueue, popleft_n, and free-block queue performance. Related #59283 and #55841 change eviction/contiguity policy; #40459 explores a Rust control-plane replacement. None implements this Python-only optimization with the existing queue contract. Issue #40244 concerns restoring allocation order; this PR does not address that behavior and is not linked as its fix.

AI assistance was used (OpenAI Codex) for implementation, testing, benchmarking, and this description. The human submitter reviewed the changes before publication.


Pull Request Checklist
  • I used vLLM's /pr-checklist skill. (Mandatory for agents, optional for humans).

  • AI assistance was used during the creation of this PR.

  • Design Fit: Small change to existing queue methods; preserves API and list invariants. The singleton branch's tradeoff is documented.

  • Testing and Validation: Existing cache suites, targeted drain/refill test, randomized checks, and repeated CPU microbenchmarks. End-to-end serving/model evaluations are deferred.

  • Code Quality and Style: Minimal diff, no dependencies or new abstraction; Ruff and mypy checks.

  • Pull Request Contents: Claims, configuration, run counts, variability, duplicate-work explanation, AI attribution, reproduction, and limitations included.

Cache neighboring blocks and queue sentinels in locals, and avoid the batch loop when allocating one block. Cover draining and refilling the queue.

Co-authored-by: OpenAI Codex <noreply@openai.com>
Signed-off-by: NickLucche <nicolo.lucchesi@mistral.ai>

@claude claude Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Claude Code Review

This pull request is from a fork — automated review is disabled. A repository maintainer can comment @claude review to run a one-time review.

@NickLucche
NickLucche marked this pull request as draft October 6, 2026 17:39

@njhill njhill left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nice!

Comment thread vllm/v1/core/kv_cache_utils.py Outdated
if n == 1:
assert curr_block is not None
next_block = curr_block.next_free_block
curr_block.prev_free_block = curr_block.next_free_block = None

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit:

Suggested change
curr_block.prev_free_block = curr_block.next_free_block = None
curr_block.prev_free_block = None
curr_block.next_free_block = None

@NickLucche
NickLucche marked this pull request as ready for review October 7, 2026 22:33

@claude claude Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Claude Code Review

This pull request is from a fork — automated review is disabled. A repository maintainer can comment @claude review to run a one-time review.

Apply review feedback by resetting each link on a separate line, matching the bulk pop path.

Co-authored-by: OpenAI Codex <noreply@openai.com>
Signed-off-by: NickLucche <nicolo.lucchesi@mistral.ai>
@NickLucche

Copy link
Copy Markdown
Member Author

/ci run --allow-stale

@github-actions

github-actions Bot commented Oct 7, 2026

Copy link
Copy Markdown

✅ Triggered Buildkite CI #93448 for commit 7693dcfba877.

⚠️ This PR is 69 commits behind upstream main. Running CI at your own risk because --allow-stale was requested; outdated CI configuration may cause failures. Before merging, merge or rebase onto the latest main, then rerun /ci run on the latest PR commit.

@NickLucche
NickLucche enabled auto-merge (squash) October 7, 2026 22:52
@github-actions github-actions Bot added the ready ONLY add when PR is ready to merge/full CI is needed label Oct 7, 2026
@vllm-agent

Copy link
Copy Markdown
Collaborator

CI selector (shadow): 134 test steps (173 jobs) instead of 60 (77 jobs)

Shadow mode: this changes nothing about what CI runs. It shows what the evidence-based selector would pick for this PR, next to today's rules. How it works.

Feedback welcome: reply here if it would skip a step this change needs, or runs something unrelated.

steps (jobs) Today's rules Selector Would skip Would add
NVIDIA, CPU and others 60 (77) 134 (173) 11 (19) 85 (115)
AMD mirrors 51 (62) 123 (168) 5 (8) 77 (114)
Selector would run (134)
  • amd-kernels-mi355
  • amd-lm-eval-small-models-harness
  • amd-qwen3-next-mtp-async-eplb-accuracy
  • async-engine-inputs-utils-worker
  • basic-correctness ×2
  • basic-correctness-cpu-offload
  • basic-correctness-cumem
  • basic-correctness-prefetch-offload
  • basic-correctness-sleep-mode
  • basic-models-tests-extra-initialization ×14
  • basic-models-tests-initialization
  • basic-models-tests-other
  • batch-invariance-b200
  • batch-invariance-h100
  • benchmarks-cli-test
  • cpu-multimodal-config
  • crosslayer-kv-layout-distributed-nixlconnector-pd-accuracy-tests-4-gpus
  • cudagraph
  • distributed-compile-comm-4-gpus
  • distributed-compile-rpc-tests-2-gpus
  • distributed-dp-tests-2-gpus
  • distributed-dp-tests-4-gpus
  • distributed-flashinfer-nixlconnector-pd-accuracy-4-gpus
  • distributed-model-tests-2-gpus ×3
  • distributed-mooncakeconnector-pd-accuracy-4-gpus
  • distributed-nixlconnector-pd-accuracy-4-gpus
  • distributed-tests-8xh100
  • distributed-torchrun-examples-4-gpus
  • distributed-torchrun-shutdown-tests-2-gpus
  • dp-ep-distributed-nixlconnector-pd-accuracy-tests-4-gpus
  • e2e-core-1-gpu
  • e2e-core-large-memory
  • e2e-scheduling-1-gpu
  • e2e-scheduling-accuracy-1-gpu
  • elastic-ep-scaling-test
  • engine
  • engine-1-gpu
  • entrypoints-integration-api-server ×4
  • entrypoints-integration-api-server-generate
  • entrypoints-integration-api-server-openai-chat_completion
  • entrypoints-integration-api-server-openai-completion
  • entrypoints-integration-llm
  • entrypoints-integration-multimodal
  • entrypoints-integration-pooling
  • entrypoints-integration-responses-api
  • entrypoints-integration-speech_to_text
  • entrypoints-unit-tests
  • examples
  • extract-hidden-states-integration
  • extract-hidden-states-integration-2-gpus
  • fault-tolerance-e2e-2xh100
  • fusion-e2e-config-sweep-h100
  • fusion-e2e-quick-h100
  • fusion-e2e-tp2-ar-rms-config-sweep-h100
  • fusion-e2e-tp2-ar-rms-dynamo-partition-amd
  • fusion-e2e-tp2-ar-rms-inductor-partition-amd
  • fusion-e2e-tp2-asynctp-config-sweep-h100
  • fusion-e2e-tp2-b200
  • fusion-e2e-tp2-quick-h100
  • hybrid-ssm-nixlconnector-pd-accuracy-tests-4-gpus
  • hybrid-ssm-nixlconnector-pd-prefix-cache-2-gpus
  • kernels-b200 ×3
  • kernels-deepgemm-test-h100
  • kernels-root-misc-test-b200
  • kimi-k3-prefix-cache-4xb200 ×2
  • kv-offload-large
  • kv-offload-medium
  • kv-offload-small
  • language-models-tests-extra-standard ×2
  • language-models-tests-granite-l4-compatibility
  • language-models-tests-hybrid ×2
  • language-models-tests-standard
  • lm-eval-dspark-watermark-2xh100
  • lm-eval-small-models
  • lm-eval-turboquant-k3v4nc
  • lm-eval-turboquant-k8v4
  • lm-eval-turboquant-t3nc
  • lm-eval-turboquant-t4nc
  • lm-eval-watermarking
  • lora ×4
  • lora-tp-distributed ×4
  • metrics-tracing-2-gpus
  • model-executor
  • mooncake-ec-tcp-e2e-2-gpus
  • mrcr-eval-small-models
  • multi-modal-accuracy-eval-small-models
  • multi-modal-models-standard-1-qwen2
  • multi-modal-models-standard-2-qwen3-gemma
  • multi-modal-models-standard-3-llava-qwen2-vl
  • multi-modal-models-standard-4-other-whisper
  • multiconnector-nixl-offloading-pd-accuracy-2-gpus
  • multiconnector-nixl-offloading-pd-edge-cases-2-gpus
  • nixlconnector-pd-edge-cases-2-gpus
  • openai-api-correctness
  • pipeline-context-parallelism-4-gpus
  • plugin-tests-2-gpus
  • push-nixlconnector-pp-prefill-pd-accuracy-4-gpus
  • pytorch-compilation-dynamic-shapes
  • pytorch-compilation-unit-tests
  • pytorch-compilation-unit-tests-h100
  • pytorch-fullgraph-cudagraph-l4-compatibility
  • pytorch-fullgraph-test
  • quantization ×4
  • quantized-models-test
  • quantized-moe-test-b200
  • rayexecutorv2-4-gpus
  • regression
  • replayssm-e2e
  • rust-frontend-core-correctness
  • rust-frontend-distributed
  • rust-frontend-openai-coverage
  • rust-frontend-serve-admin-coverage
  • rust-frontend-tool-use
  • samplers-multimodal-beam-search
  • samplers-test
  • scale-out-ec-e2e-2-gpus
  • sharded-rdt-weight-transfer
  • spec-decode-draft-model ×4
  • spec-decode-eagle-1-deepseek-qwen
  • spec-decode-eagle-2-llama3-qwen-vl-other
  • spec-decode-mtp-deepseek-mimo
  • spec-decode-mtp-gemma4
  • spec-decode-mtp-qwen3-5
  • spec-decode-ngram-suffix
  • spec-decode-speculators
  • v1-core
  • v1-executor-worker
  • v1-kv-connectors ×4
  • v1-kv-offload
  • v1-logits-oracle
  • v1-metrics-lmeval
  • v1-others-cpu
  • v1-sample
  • v1-spec-decode
Would skip (today's rules run them) (11)
  • ascend-npu-test
  • basic-models-test-other-cpu
  • cpu-language-generation-and-pooling-model-tests ×3
  • cpu-params-env-tokenizers-parser
  • cpu-reasoning-renderers
  • cpu-tool-parsers
  • kernels-fla-ops-test-b200
  • kernels-mhc-test-b200
  • multi-modal-processor ×4
  • multi-modal-processor-cpu ×4
  • pytorch-compilation-passes-unit-tests
Would add (today's rules do not run them) (85)
  • amd-kernels-mi355 (Python record)
  • amd-lm-eval-small-models-harness (Python record)
  • amd-qwen3-next-mtp-async-eplb-accuracy (Python record)
  • basic-models-tests-extra-initialization ×14 (code map)
  • batch-invariance-b200 (Python record)
  • batch-invariance-h100 (Python record)
  • crosslayer-kv-layout-distributed-nixlconnector-pd-accuracy-tests-4-gpus (Python record)
  • cudagraph (Python record)
  • distributed-compile-comm-4-gpus (Python record)
  • distributed-compile-rpc-tests-2-gpus (Python record)
  • distributed-dp-tests-2-gpus (Python record)
  • distributed-dp-tests-4-gpus (Python record)
  • distributed-flashinfer-nixlconnector-pd-accuracy-4-gpus (Python record)
  • distributed-model-tests-2-gpus ×3 (Python record)
  • distributed-mooncakeconnector-pd-accuracy-4-gpus (Python record)
  • distributed-nixlconnector-pd-accuracy-4-gpus (Python record)
  • distributed-tests-8xh100 (Python record)
  • distributed-torchrun-examples-4-gpus (Python record)
  • distributed-torchrun-shutdown-tests-2-gpus (Python record)
  • dp-ep-distributed-nixlconnector-pd-accuracy-tests-4-gpus (Python record)
  • elastic-ep-scaling-test (Python record)
  • engine (Python record)
  • engine-1-gpu (code map)
  • entrypoints-unit-tests (Python record)
  • examples (Python record)
  • extract-hidden-states-integration (Python record)
  • extract-hidden-states-integration-2-gpus (Python record)
  • fault-tolerance-e2e-2xh100 (Python record)
  • fusion-e2e-config-sweep-h100 (Python record)
  • fusion-e2e-quick-h100 (Python record)
  • fusion-e2e-tp2-ar-rms-config-sweep-h100 (Python record)
  • fusion-e2e-tp2-ar-rms-dynamo-partition-amd (Python record)
  • fusion-e2e-tp2-ar-rms-inductor-partition-amd (Python record)
  • fusion-e2e-tp2-asynctp-config-sweep-h100 (Python record)
  • fusion-e2e-tp2-b200 (Python record)
  • fusion-e2e-tp2-quick-h100 (Python record)
  • hybrid-ssm-nixlconnector-pd-accuracy-tests-4-gpus (Python record)
  • hybrid-ssm-nixlconnector-pd-prefix-cache-2-gpus (Python record)
  • kernels-b200 ×3 (Python record)
  • kernels-deepgemm-test-h100 (Python record)
  • kv-offload-large (Python record)
  • kv-offload-medium (Python record)
  • kv-offload-small (Python record)
  • language-models-tests-extra-standard ×2 (Python record)
  • lm-eval-dspark-watermark-2xh100 (Python record)
  • lm-eval-small-models (Python record)
  • lm-eval-turboquant-k3v4nc (Python record)
  • lm-eval-turboquant-k8v4 (Python record)
  • lm-eval-turboquant-t3nc (Python record)
  • lm-eval-turboquant-t4nc (Python record)
  • lm-eval-watermarking (Python record)
  • lora ×4 (Python record)
  • lora-tp-distributed ×4 (Python record)
  • model-executor (Python record)
  • mooncake-ec-tcp-e2e-2-gpus (Python record)
  • mrcr-eval-small-models (Python record)
  • multiconnector-nixl-offloading-pd-accuracy-2-gpus (Python record)
  • multiconnector-nixl-offloading-pd-edge-cases-2-gpus (Python record)
  • nixlconnector-pd-edge-cases-2-gpus (Python record)
  • openai-api-correctness (Python record)
  • pipeline-context-parallelism-4-gpus (Python record)
  • plugin-tests-2-gpus (Python record)
  • push-nixlconnector-pp-prefill-pd-accuracy-4-gpus (Python record)
  • quantization ×4 (Python record)
  • quantized-models-test (Python record)
  • quantized-moe-test-b200 (Python record)
  • rayexecutorv2-4-gpus (Python record)
  • replayssm-e2e (Python record)
  • rust-frontend-core-correctness (Python record)
  • rust-frontend-distributed (Python record)
  • rust-frontend-openai-coverage (Python record)
  • rust-frontend-serve-admin-coverage (Python record)
  • rust-frontend-tool-use (Python record)
  • samplers-multimodal-beam-search (Python record)
  • samplers-test (Python record)
  • scale-out-ec-e2e-2-gpus (Python record)
  • sharded-rdt-weight-transfer (Python record)
  • spec-decode-draft-model ×4 (Python record)
  • spec-decode-eagle-1-deepseek-qwen (Python record)
  • spec-decode-eagle-2-llama3-qwen-vl-other (Python record)
  • spec-decode-mtp-deepseek-mimo (Python record)
  • spec-decode-mtp-gemma4 (Python record)
  • spec-decode-mtp-qwen3-5 (Python record)
  • spec-decode-ngram-suffix (Python record)
  • spec-decode-speculators (Python record)
AMD mirrors: would skip (5)
  • kernels-fla-ops-test-b200
  • kernels-mhc-test-b200
  • multi-modal-processor ×4
  • platform-tests
  • pytorch-compilation-passes-unit-tests
AMD mirrors: would add (77)
  • basic-models-tests-extra-initialization ×14 (code map)
  • crosslayer-kv-layout-distributed-nixlconnector-pd-accuracy-tests-4-gpus (Python record)
  • cudagraph (Python record)
  • distributed-compile-rpc-tests-2-gpus (Python record)
  • distributed-dp-tests-2-gpus (Python record)
  • distributed-dp-tests-4-gpus (Python record)
  • distributed-flashinfer-nixlconnector-pd-accuracy-4-gpus (Python record)
  • distributed-model-tests-2-gpus ×3 (Python record)
  • distributed-mooncakeconnector-pd-accuracy-4-gpus (Python record)
  • distributed-nixlconnector-pd-accuracy-4-gpus (Python record)
  • distributed-tests-8xh100 (Python record)
  • distributed-torchrun-examples-4-gpus (Python record)
  • distributed-torchrun-shutdown-tests-2-gpus (Python record)
  • dp-ep-distributed-nixlconnector-pd-accuracy-tests-4-gpus (Python record)
  • engine (Python record)
  • engine-1-gpu (code map)
  • entrypoints-unit-tests (Python record)
  • examples (Python record)
  • extract-hidden-states-integration (Python record)
  • extract-hidden-states-integration-2-gpus (Python record)
  • fusion-and-compile-unit-tests-2xb200 (Python record)
  • fusion-e2e-config-sweep-h100 (Python record)
  • fusion-e2e-quick-h100 (Python record)
  • fusion-e2e-tp2-ar-rms-config-sweep-h100 (Python record)
  • fusion-e2e-tp2-asynctp-config-sweep-h100 (Python record)
  • fusion-e2e-tp2-b200 (Python record)
  • fusion-e2e-tp2-quick-h100 (Python record)
  • hybrid-ssm-nixlconnector-pd-accuracy-tests-4-gpus (Python record)
  • hybrid-ssm-nixlconnector-pd-prefix-cache-2-gpus (Python record)
  • jit-monitor-no-runtime-jit (Python record)
  • kernels-moe-test ×5 (Python record)
  • kernels-quantization-test ×6 (Python record)
  • kv-offload-large (Python record)
  • kv-offload-medium (Python record)
  • kv-offload-small (Python record)
  • language-models-tests-extra-standard ×2 (Python record)
  • lm-eval-dspark-watermark-2xh100 (Python record)
  • lm-eval-small-models (Python record)
  • lm-eval-turboquant-k3v4nc (Python record)
  • lm-eval-turboquant-k8v4 (Python record)
  • lm-eval-turboquant-t3nc (Python record)
  • lm-eval-turboquant-t4nc (Python record)
  • lm-eval-watermarking (Python record)
  • lora ×4 (Python record)
  • lora-tp-distributed ×4 (Python record)
  • model-executor (Python record)
  • mooncake-ec-tcp-e2e-2-gpus (Python record)
  • mrcr-eval-small-models (Python record)
  • multiconnector-nixl-offloading-pd-accuracy-2-gpus (Python record)
  • multiconnector-nixl-offloading-pd-edge-cases-2-gpus (Python record)
  • nixlconnector-pd-edge-cases-2-gpus (Python record)
  • nixlconnector-pd-spec-decode-acceptance-2-gpus (Python record)
  • openai-api-correctness (Python record)
  • pipeline-context-parallelism-4-gpus (Python record)
  • plugin-tests-2-gpus (Python record)
  • push-nixlconnector-pp-prefill-pd-accuracy-4-gpus (Python record)
  • quantization ×4 (Python record)
  • quantized-models-test (Python record)
  • quantized-moe-test-b200 (Python record)
  • rayexecutorv2-4-gpus (Python record)
  • rust-frontend-core-correctness (Python record)
  • rust-frontend-distributed (Python record)
  • rust-frontend-openai-coverage (Python record)
  • rust-frontend-serve-admin-coverage (Python record)
  • rust-frontend-tool-use (Python record)
  • samplers-multimodal-beam-search (Python record)
  • samplers-test (Python record)
  • scale-out-ec-e2e-2-gpus (Python record)
  • sharded-rdt-weight-transfer (Python record)
  • spec-decode-draft-model ×4 (Python record)
  • spec-decode-eagle-1-deepseek-qwen (Python record)
  • spec-decode-eagle-2-llama3-qwen-vl-other (Python record)
  • spec-decode-mtp-deepseek-mimo (Python record)
  • spec-decode-mtp-gemma4 (Python record)
  • spec-decode-mtp-qwen3-5 (Python record)
  • spec-decode-ngram-suffix (Python record)
  • spec-decode-speculators (Python record)

2 changed files · base 7b665f7a58 · head 7693dcfba8 · Python record: build 93039 at 1e5d0ea888 · kernel record: table 43b4aae (build 93244), map 43b4aae · not counted: 10 build steps, 5 A100 steps the generator no longer emits, 124 optional steps the selector would also run

@NickLucche

Copy link
Copy Markdown
Member Author

/ci retry

@github-actions

github-actions Bot commented Oct 8, 2026

Copy link
Copy Markdown

@NickLucche
NickLucche merged commit e161a07 into vllm-project:main Oct 8, 2026
20 checks passed
michael-gpu pushed a commit to practical-inference/vllm-ampere-extended that referenced this pull request Oct 20, 2026
Signed-off-by: NickLucche <nicolo.lucchesi@mistral.ai>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

kv-cache-manager ready ONLY add when PR is ready to merge/full CI is needed

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants