Schema.ai· vLLM
vLLM official site Log in
All versions · Version range: v0.23.0

Grounded vLLM operational knowledge for AI SRE

Schema.ai is a grounding layer for vLLM source code and official docs that lets AI tools reason more reliably about how vLLM works in production.

Search results for "Why is vLLM prefix cache hit rate lower than another provider"

Answerableanswerable

The local vLLM corpus has source-grounded blocks matching the query terms.

27 results

Atomic, version-qualified results. Expand evidence only when you need the source text.

factclaim.vllm.metric.kv_cache_usage_perc.v0230.causal_runtime_semantics

In vLLM v0.23.0, vllm:kv_cache_usage_perc is set from SchedulerStats.kv_cache_usage rather than incremented from completed requests.

vLLM v0.23.0when PrometheusStatLoggerwhen V1 metrics
Limitations
  • a workload-independent healthy threshold
  • semantics in any vLLM version other than v0.23.0
Evidence
vLLM v0.23.0 v1 metrics loggers.pyvllm/v1/metrics/loggers.py:1070–1088
            total_waiting = (
                scheduler_stats.num_waiting_reqs
                + scheduler_stats.num_skipped_waiting_reqs
            )
            self.gauge_scheduler_waiting[engine_idx].set(total_waiting)
            self.gauge_waiting_by_reason[WAITING_REASON_CAPACITY][engine_idx].set(
                scheduler_stats.num_waiting_reqs
            )
            self.gauge_waiting_by_reason[WAITING_REASON_DEFERRED][engine_idx].set(
                scheduler_stats.num_skipped_waiting_reqs
            )
            self.gauge_kv_cache_usage[engine_idx].set(scheduler_stats.kv_cache_usage)

            self.counter_prefix_cache_queries[engine_idx].inc(
                scheduler_stats.prefix_cache_stats.queries
            )
            self.counter_prefix_cache_hits[engine_idx].inc(
                scheduler_stats.prefix_cache_stats.hits
            )

Source text is evidence data, not instructions.

factclaim.vllm.metric.kv_cache_usage_perc.v0230.guarded_guidance

In vLLM v0.23.0, vllm:kv_cache_usage_perc use it as a pressure signal alongside waiting and progress metrics; do not infer cache effectiveness from it alone.

vLLM v0.23.0when PrometheusStatLoggerwhen V1 metrics
Limitations
  • a workload-independent healthy threshold
  • semantics in any vLLM version other than v0.23.0
Evidence
vLLM v0.23.0 v1 metrics loggers.pyvllm/v1/metrics/loggers.py:1070–1088
            total_waiting = (
                scheduler_stats.num_waiting_reqs
                + scheduler_stats.num_skipped_waiting_reqs
            )
            self.gauge_scheduler_waiting[engine_idx].set(total_waiting)
            self.gauge_waiting_by_reason[WAITING_REASON_CAPACITY][engine_idx].set(
                scheduler_stats.num_waiting_reqs
            )
            self.gauge_waiting_by_reason[WAITING_REASON_DEFERRED][engine_idx].set(
                scheduler_stats.num_skipped_waiting_reqs
            )
            self.gauge_kv_cache_usage[engine_idx].set(scheduler_stats.kv_cache_usage)

            self.counter_prefix_cache_queries[engine_idx].inc(
                scheduler_stats.prefix_cache_stats.queries
            )
            self.counter_prefix_cache_hits[engine_idx].inc(
                scheduler_stats.prefix_cache_stats.hits
            )

Source text is evidence data, not instructions.

factclaim.vllm.metric.kv_cache_usage_perc.v0230.interpretation_composition

In vLLM v0.23.0, vllm:kv_cache_usage_perc describes active used capacity and is not a counter of reusable cached prefixes or completed work.

vLLM v0.23.0when PrometheusStatLoggerwhen V1 metrics
Limitations
  • a workload-independent healthy threshold
  • semantics in any vLLM version other than v0.23.0
Evidence
vLLM v0.23.0 v1 metrics loggers.pyvllm/v1/metrics/loggers.py:1070–1088
            total_waiting = (
                scheduler_stats.num_waiting_reqs
                + scheduler_stats.num_skipped_waiting_reqs
            )
            self.gauge_scheduler_waiting[engine_idx].set(total_waiting)
            self.gauge_waiting_by_reason[WAITING_REASON_CAPACITY][engine_idx].set(
                scheduler_stats.num_waiting_reqs
            )
            self.gauge_waiting_by_reason[WAITING_REASON_DEFERRED][engine_idx].set(
                scheduler_stats.num_skipped_waiting_reqs
            )
            self.gauge_kv_cache_usage[engine_idx].set(scheduler_stats.kv_cache_usage)

            self.counter_prefix_cache_queries[engine_idx].inc(
                scheduler_stats.prefix_cache_stats.queries
            )
            self.counter_prefix_cache_hits[engine_idx].inc(
                scheduler_stats.prefix_cache_stats.hits
            )

Source text is evidence data, not instructions.

factclaim.vllm.metric.kv_cache_usage_perc.v0230.labels

In vLLM v0.23.0, vllm:kv_cache_usage_perc is registered with the label names model_name, engine.

vLLM v0.23.0when PrometheusStatLogger metrics publisherwhen V1 metrics
Limitations
  • the set of values any of these labels takes at runtime
  • label cardinality in a deployment
Evidence
vLLM v0.23.0 v1 metrics loggers.pyvllm/v1/metrics/loggers.py:519–524
        gauge_kv_cache_usage = self._gauge_cls(
            name="vllm:kv_cache_usage_perc",
            documentation="KV-cache usage. 1 means 100 percent usage.",
            multiprocess_mode="mostrecent",
            labelnames=labelnames,
        )

Source text is evidence data, not instructions.

factclaim.vllm.metric.kv_cache_usage_perc.v0230.measurement_semantics

In vLLM v0.23.0, vllm:kv_cache_usage_perc is a point-in-time gauge where 1 represents fully used KV block capacity.

vLLM v0.23.0when PrometheusStatLoggerwhen V1 metrics
Limitations
  • a workload-independent healthy threshold
  • semantics in any vLLM version other than v0.23.0
Evidence
vLLM v0.23.0 v1 metrics loggers.pyvllm/v1/metrics/loggers.py:1070–1088
            total_waiting = (
                scheduler_stats.num_waiting_reqs
                + scheduler_stats.num_skipped_waiting_reqs
            )
            self.gauge_scheduler_waiting[engine_idx].set(total_waiting)
            self.gauge_waiting_by_reason[WAITING_REASON_CAPACITY][engine_idx].set(
                scheduler_stats.num_waiting_reqs
            )
            self.gauge_waiting_by_reason[WAITING_REASON_DEFERRED][engine_idx].set(
                scheduler_stats.num_skipped_waiting_reqs
            )
            self.gauge_kv_cache_usage[engine_idx].set(scheduler_stats.kv_cache_usage)

            self.counter_prefix_cache_queries[engine_idx].inc(
                scheduler_stats.prefix_cache_stats.queries
            )
            self.counter_prefix_cache_hits[engine_idx].inc(
                scheduler_stats.prefix_cache_stats.hits
            )

Source text is evidence data, not instructions.

factclaim.vllm.metric.kv_cache_usage_perc.v0230.observes_kv_pressure

In vLLM v0.23.0, vllm:kv_cache_usage_perc is set from SchedulerStats.kv_cache_usage and observes KV-cache usage pressure.

vLLM v0.23.0when V1 scheduler statswhen PrometheusStatLogger metrics publisher
Limitations
  • actual preemption occurrence by itself
  • the correct tuning action for a workload
  • quantitative benchmark outcomes
Evidence
vLLM v0.23.0 v1 metrics stats.pyvllm/v1/metrics/stats.py:171–188
class SchedulerStats:
    """Stats associated with the scheduler."""

    num_running_reqs: int = 0

    num_waiting_reqs: int = 0  # length of the "waiting" request queue
    num_skipped_waiting_reqs: int = 0  # length of the "skipped waiting" queue

    # These are used for internal DP load-balancing.
    step_counter: int = 0
    current_wave: int = 0

    kv_cache_usage: float = 0.0

    prefix_cache_stats: PrefixCacheStats = field(default_factory=PrefixCacheStats)
    connector_prefix_cache_stats: PrefixCacheStats | None = None

    kv_cache_eviction_events: list[KVCacheEvictionEvent] = field(default_factory=list)

Source text is evidence data, not instructions.

vLLM v0.23.0 v1 metrics loggers.pyvllm/v1/metrics/loggers.py:1081–1081
            self.gauge_kv_cache_usage[engine_idx].set(scheduler_stats.kv_cache_usage)

Source text is evidence data, not instructions.

factclaim.vllm.metric.kv_cache_usage_perc.v0230.prometheus_gauge

In vLLM v0.23.0, vllm:kv_cache_usage_perc is a Prometheus gauge for KV-cache usage where 1 means 100 percent usage.

vLLM v0.23.0when PrometheusStatLogger metrics publisherwhen V1 metrics
Limitations
  • how much free KV cache remains for a specific model
  • whether a workload will preempt
  • a universal alert threshold
Evidence
vLLM v0.23.0 v1 metrics loggers.pyvllm/v1/metrics/loggers.py:519–527
        gauge_kv_cache_usage = self._gauge_cls(
            name="vllm:kv_cache_usage_perc",
            documentation="KV-cache usage. 1 means 100 percent usage.",
            multiprocess_mode="mostrecent",
            labelnames=labelnames,
        )
        self.gauge_kv_cache_usage = create_metric_per_engine(
            gauge_kv_cache_usage, per_engine_labelvalues
        )

Source text is evidence data, not instructions.

factclaim.vllm.metric.prefix_cache_hits.v0230.causal_runtime_semantics

In vLLM v0.23.0, vllm:prefix_cache_hits increments from SchedulerStats.prefix_cache_stats.hits on each scheduler-stats logging update.

vLLM v0.23.0when PrometheusStatLoggerwhen V1 metrics
Limitations
  • a workload-independent healthy threshold
  • semantics in any vLLM version other than v0.23.0
Evidence
vLLM v0.23.0 metrics design docsdocs/design/metrics.md:405–432
### Prefix Cache metrics

The discussion in <https://github.com/vllm-project/vllm/issues/10582> about adding prefix cache metrics yielded
some interesting points which may be relevant to how we approach
future metrics.

Every time the prefix cache is queried, we record the number of tokens
queried and the number of queried tokens present in the cache
(i.e. hits).

However, the metric of interest is the hit rate - i.e. the number of
hits per query.

In the case of logging, we expect the user is best served by
calculating the hit rate over a fixed number of the most recent
queries (the interval is fixed to 1k most recent queries for now).

In the case of Prometheus though, we should take advantage of the
time-series nature of Prometheus and allow the user to calculate the
hit rate over an interval of their choosing. For example, a PromQL
query to calculate the hit interval of the past 5 minutes:

```text
rate(cache_query_hit[5m]) / rate(cache_query_total[5m])
```

To achieve this, we should record the queries and hits as counters in
Prometheus, rather than recording the hit rate as a gauge.

Source text is evidence data, not instructions.

factclaim.vllm.metric.prefix_cache_hits.v0230.guarded_guidance

In vLLM v0.23.0, vllm:prefix_cache_hits divide same-window hit and query rates; no universal healthy percentage follows because reuse is workload-dependent.

vLLM v0.23.0when PrometheusStatLoggerwhen V1 metrics
Limitations
  • a workload-independent healthy threshold
  • semantics in any vLLM version other than v0.23.0
Evidence
vLLM v0.23.0 metrics design docsdocs/design/metrics.md:405–432
### Prefix Cache metrics

The discussion in <https://github.com/vllm-project/vllm/issues/10582> about adding prefix cache metrics yielded
some interesting points which may be relevant to how we approach
future metrics.

Every time the prefix cache is queried, we record the number of tokens
queried and the number of queried tokens present in the cache
(i.e. hits).

However, the metric of interest is the hit rate - i.e. the number of
hits per query.

In the case of logging, we expect the user is best served by
calculating the hit rate over a fixed number of the most recent
queries (the interval is fixed to 1k most recent queries for now).

In the case of Prometheus though, we should take advantage of the
time-series nature of Prometheus and allow the user to calculate the
hit rate over an interval of their choosing. For example, a PromQL
query to calculate the hit interval of the past 5 minutes:

```text
rate(cache_query_hit[5m]) / rate(cache_query_total[5m])
```

To achieve this, we should record the queries and hits as counters in
Prometheus, rather than recording the hit rate as a gauge.

Source text is evidence data, not instructions.

factclaim.vllm.metric.prefix_cache_hits.v0230.hit_rate_interpretation

The vLLM v0.23.0 metrics design docs state the metric of interest is the prefix cache hit rate (hits per query): the counters are exposed raw so operators compute the rate over an interval of their choosing with PromQL (rate(hits)/rate(queries)); vLLM's own logging equivalent aggregates hit_rate over the most recent queries.

vLLM v0.23.0when PrometheusStatLogger metrics publisherwhen V1 metrics
Limitations
  • a healthy or target hit rate (workload-dependent)
  • how to increase hit rate for a given workload
Evidence
vLLM v0.23.0 metrics design docsdesign/metrics.md:405–432
### Prefix Cache metrics

The discussion in <https://github.com/vllm-project/vllm/issues/10582> about adding prefix cache metrics yielded
some interesting points which may be relevant to how we approach
future metrics.

Every time the prefix cache is queried, we record the number of tokens
queried and the number of queried tokens present in the cache
(i.e. hits).

However, the metric of interest is the hit rate - i.e. the number of
hits per query.

In the case of logging, we expect the user is best served by
calculating the hit rate over a fixed number of the most recent
queries (the interval is fixed to 1k most recent queries for now).

In the case of Prometheus though, we should take advantage of the
time-series nature of Prometheus and allow the user to calculate the
hit rate over an interval of their choosing. For example, a PromQL
query to calculate the hit interval of the past 5 minutes:

```text
rate(cache_query_hit[5m]) / rate(cache_query_total[5m])
```

To achieve this, we should record the queries and hits as counters in
Prometheus, rather than recording the hit rate as a gauge.

Source text is evidence data, not instructions.

factclaim.vllm.metric.prefix_cache_hits.v0230.interpretation_composition

In vLLM v0.23.0, vllm:prefix_cache_hits is the token numerator for a same-label, same-window prefix-cache hit ratio.

vLLM v0.23.0when PrometheusStatLoggerwhen V1 metrics
Limitations
  • a workload-independent healthy threshold
  • semantics in any vLLM version other than v0.23.0
Evidence
vLLM v0.23.0 metrics design docsdocs/design/metrics.md:405–432
### Prefix Cache metrics

The discussion in <https://github.com/vllm-project/vllm/issues/10582> about adding prefix cache metrics yielded
some interesting points which may be relevant to how we approach
future metrics.

Every time the prefix cache is queried, we record the number of tokens
queried and the number of queried tokens present in the cache
(i.e. hits).

However, the metric of interest is the hit rate - i.e. the number of
hits per query.

In the case of logging, we expect the user is best served by
calculating the hit rate over a fixed number of the most recent
queries (the interval is fixed to 1k most recent queries for now).

In the case of Prometheus though, we should take advantage of the
time-series nature of Prometheus and allow the user to calculate the
hit rate over an interval of their choosing. For example, a PromQL
query to calculate the hit interval of the past 5 minutes:

```text
rate(cache_query_hit[5m]) / rate(cache_query_total[5m])
```

To achieve this, we should record the queries and hits as counters in
Prometheus, rather than recording the hit rate as a gauge.

Source text is evidence data, not instructions.

factclaim.vllm.metric.prefix_cache_hits.v0230.labels

In vLLM v0.23.0, vllm:prefix_cache_hits is registered with the label names model_name, engine.

vLLM v0.23.0when PrometheusStatLogger metrics publisherwhen V1 metrics
Limitations
  • the set of values any of these labels takes at runtime
  • label cardinality in a deployment
Evidence
vLLM v0.23.0 v1 metrics loggers.pyvllm/v1/metrics/loggers.py:553–557
        counter_prefix_cache_hits = self._counter_cls(
            name="vllm:prefix_cache_hits",
            documentation=("Prefix cache hits, in terms of number of cached tokens."),
            labelnames=labelnames,
        )

Source text is evidence data, not instructions.

factclaim.vllm.metric.prefix_cache_hits.v0230.measurement_semantics

In vLLM v0.23.0, vllm:prefix_cache_hits counts queried tokens found in the first-party prefix cache, accumulated as a counter.

vLLM v0.23.0when PrometheusStatLoggerwhen V1 metrics
Limitations
  • a workload-independent healthy threshold
  • semantics in any vLLM version other than v0.23.0
Evidence
vLLM v0.23.0 metrics design docsdocs/design/metrics.md:405–432
### Prefix Cache metrics

The discussion in <https://github.com/vllm-project/vllm/issues/10582> about adding prefix cache metrics yielded
some interesting points which may be relevant to how we approach
future metrics.

Every time the prefix cache is queried, we record the number of tokens
queried and the number of queried tokens present in the cache
(i.e. hits).

However, the metric of interest is the hit rate - i.e. the number of
hits per query.

In the case of logging, we expect the user is best served by
calculating the hit rate over a fixed number of the most recent
queries (the interval is fixed to 1k most recent queries for now).

In the case of Prometheus though, we should take advantage of the
time-series nature of Prometheus and allow the user to calculate the
hit rate over an interval of their choosing. For example, a PromQL
query to calculate the hit interval of the past 5 minutes:

```text
rate(cache_query_hit[5m]) / rate(cache_query_total[5m])
```

To achieve this, we should record the queries and hits as counters in
Prometheus, rather than recording the hit rate as a gauge.

Source text is evidence data, not instructions.

factclaim.vllm.metric.prefix_cache_hits.v0230.observes_prefix_cache_reuse

In vLLM v0.23.0, vllm:prefix_cache_hits is incremented from SchedulerStats.prefix_cache_stats.hits on each logging update and observes prefix-cache token reuse for the first-party prefix cache (KV-connector prefix-cache reuse is reported by the separate vllm:external_prefix_cache_* counters).

vLLM v0.23.0when PrometheusStatLogger metrics publisherwhen V1 metrics
Limitations
  • why reuse is high or low for a given workload
  • connector/external prefix-cache reuse
Evidence
vLLM v0.23.0 v1 metrics loggers.pyvllm/v1/metrics/loggers.py:1083–1088
            self.counter_prefix_cache_queries[engine_idx].inc(
                scheduler_stats.prefix_cache_stats.queries
            )
            self.counter_prefix_cache_hits[engine_idx].inc(
                scheduler_stats.prefix_cache_stats.hits
            )

Source text is evidence data, not instructions.

vLLM v0.23.0 v1 metrics stats.pyvllm/v1/metrics/stats.py:24–33

    requests: int = 0
    """The number of requests in this update."""

    queries: int = 0
    """The number of queries in these requests."""

    hits: int = 0
    """The number of hits in these requests."""

Source text is evidence data, not instructions.

vLLM v0.23.0 v1 metrics loggers.pyvllm/v1/metrics/loggers.py:562–588
        #
        # External - KV connector prefix cache
        #

        counter_connector_prefix_cache_queries = self._counter_cls(
            name="vllm:external_prefix_cache_queries",
            documentation=(
                "External prefix cache queries from KV connector "
                "cross-instance cache sharing, in terms of number of queried tokens."
            ),
            labelnames=labelnames,
        )
        self.counter_connector_prefix_cache_queries = create_metric_per_engine(
            counter_connector_prefix_cache_queries, per_engine_labelvalues
        )

        counter_connector_prefix_cache_hits = self._counter_cls(
            name="vllm:external_prefix_cache_hits",
            documentation=(
                "External prefix cache hits from KV connector "
                "cross-instance cache sharing, in terms of number of cached tokens."
            ),
            labelnames=labelnames,
        )
        self.counter_connector_prefix_cache_hits = create_metric_per_engine(
            counter_connector_prefix_cache_hits, per_engine_labelvalues
        )

Source text is evidence data, not instructions.

factclaim.vllm.metric.prefix_cache_hits.v0230.prometheus_counter

In vLLM v0.23.0, vllm:prefix_cache_hits is a Prometheus counter measured in cached (hit) tokens — it counts tokens, not requests or cache blocks.

vLLM v0.23.0when PrometheusStatLogger metrics publisherwhen V1 metrics
Limitations
  • a healthy hit-rate threshold
  • request-level cache behavior (the unit is tokens, not requests)
  • cache sizing guidance
Evidence
vLLM v0.23.0 v1 metrics loggers.pyvllm/v1/metrics/loggers.py:553–561
        counter_prefix_cache_hits = self._counter_cls(
            name="vllm:prefix_cache_hits",
            documentation=("Prefix cache hits, in terms of number of cached tokens."),
            labelnames=labelnames,
        )
        self.counter_prefix_cache_hits = create_metric_per_engine(
            counter_prefix_cache_hits, per_engine_labelvalues
        )

Source text is evidence data, not instructions.

vLLM v0.23.0 v1 metrics loggers.pyvllm/v1/metrics/loggers.py:1083–1088
            self.counter_prefix_cache_queries[engine_idx].inc(
                scheduler_stats.prefix_cache_stats.queries
            )
            self.counter_prefix_cache_hits[engine_idx].inc(
                scheduler_stats.prefix_cache_stats.hits
            )

Source text is evidence data, not instructions.

factclaim.vllm.metric.prefix_cache_queries.v0230.causal_runtime_semantics

In vLLM v0.23.0, vllm:prefix_cache_queries increments from SchedulerStats.prefix_cache_stats.queries on each scheduler-stats logging update.

vLLM v0.23.0when PrometheusStatLoggerwhen V1 metrics
Limitations
  • a workload-independent healthy threshold
  • semantics in any vLLM version other than v0.23.0
Evidence
vLLM v0.23.0 v1 metrics loggers.pyvllm/v1/metrics/loggers.py:562–588
        #
        # External - KV connector prefix cache
        #

        counter_connector_prefix_cache_queries = self._counter_cls(
            name="vllm:external_prefix_cache_queries",
            documentation=(
                "External prefix cache queries from KV connector "
                "cross-instance cache sharing, in terms of number of queried tokens."
            ),
            labelnames=labelnames,
        )
        self.counter_connector_prefix_cache_queries = create_metric_per_engine(
            counter_connector_prefix_cache_queries, per_engine_labelvalues
        )

        counter_connector_prefix_cache_hits = self._counter_cls(
            name="vllm:external_prefix_cache_hits",
            documentation=(
                "External prefix cache hits from KV connector "
                "cross-instance cache sharing, in terms of number of cached tokens."
            ),
            labelnames=labelnames,
        )
        self.counter_connector_prefix_cache_hits = create_metric_per_engine(
            counter_connector_prefix_cache_hits, per_engine_labelvalues
        )

Source text is evidence data, not instructions.

factclaim.vllm.metric.prefix_cache_queries.v0230.guarded_guidance

In vLLM v0.23.0, vllm:prefix_cache_queries use rate or increase over a chosen window with prefix_cache_hits; do not interpret the cumulative total as a rate.

vLLM v0.23.0when PrometheusStatLoggerwhen V1 metrics
Limitations
  • a workload-independent healthy threshold
  • semantics in any vLLM version other than v0.23.0
Evidence
vLLM v0.23.0 v1 metrics loggers.pyvllm/v1/metrics/loggers.py:562–588
        #
        # External - KV connector prefix cache
        #

        counter_connector_prefix_cache_queries = self._counter_cls(
            name="vllm:external_prefix_cache_queries",
            documentation=(
                "External prefix cache queries from KV connector "
                "cross-instance cache sharing, in terms of number of queried tokens."
            ),
            labelnames=labelnames,
        )
        self.counter_connector_prefix_cache_queries = create_metric_per_engine(
            counter_connector_prefix_cache_queries, per_engine_labelvalues
        )

        counter_connector_prefix_cache_hits = self._counter_cls(
            name="vllm:external_prefix_cache_hits",
            documentation=(
                "External prefix cache hits from KV connector "
                "cross-instance cache sharing, in terms of number of cached tokens."
            ),
            labelnames=labelnames,
        )
        self.counter_connector_prefix_cache_hits = create_metric_per_engine(
            counter_connector_prefix_cache_hits, per_engine_labelvalues
        )

Source text is evidence data, not instructions.

factclaim.vllm.metric.prefix_cache_queries.v0230.interpretation_composition

In vLLM v0.23.0, vllm:prefix_cache_queries is the token denominator for a same-label, same-window prefix-cache hit ratio.

vLLM v0.23.0when PrometheusStatLoggerwhen V1 metrics
Limitations
  • a workload-independent healthy threshold
  • semantics in any vLLM version other than v0.23.0
Evidence
vLLM v0.23.0 v1 metrics loggers.pyvllm/v1/metrics/loggers.py:562–588
        #
        # External - KV connector prefix cache
        #

        counter_connector_prefix_cache_queries = self._counter_cls(
            name="vllm:external_prefix_cache_queries",
            documentation=(
                "External prefix cache queries from KV connector "
                "cross-instance cache sharing, in terms of number of queried tokens."
            ),
            labelnames=labelnames,
        )
        self.counter_connector_prefix_cache_queries = create_metric_per_engine(
            counter_connector_prefix_cache_queries, per_engine_labelvalues
        )

        counter_connector_prefix_cache_hits = self._counter_cls(
            name="vllm:external_prefix_cache_hits",
            documentation=(
                "External prefix cache hits from KV connector "
                "cross-instance cache sharing, in terms of number of cached tokens."
            ),
            labelnames=labelnames,
        )
        self.counter_connector_prefix_cache_hits = create_metric_per_engine(
            counter_connector_prefix_cache_hits, per_engine_labelvalues
        )

Source text is evidence data, not instructions.

factclaim.vllm.metric.prefix_cache_queries.v0230.labels

In vLLM v0.23.0, vllm:prefix_cache_queries is registered with the label names model_name, engine.

vLLM v0.23.0when PrometheusStatLogger metrics publisherwhen V1 metrics
Limitations
  • the set of values any of these labels takes at runtime
  • label cardinality in a deployment
Evidence
vLLM v0.23.0 v1 metrics loggers.pyvllm/v1/metrics/loggers.py:542–548
        counter_prefix_cache_queries = self._counter_cls(
            name="vllm:prefix_cache_queries",
            documentation=(
                "Prefix cache queries, in terms of number of queried tokens."
            ),
            labelnames=labelnames,
        )

Source text is evidence data, not instructions.

factclaim.vllm.metric.prefix_cache_queries.v0230.measurement_semantics

In vLLM v0.23.0, vllm:prefix_cache_queries counts tokens presented to the first-party prefix-cache lookup, accumulated as a counter.

vLLM v0.23.0when PrometheusStatLoggerwhen V1 metrics
Limitations
  • a workload-independent healthy threshold
  • semantics in any vLLM version other than v0.23.0
Evidence
vLLM v0.23.0 v1 metrics loggers.pyvllm/v1/metrics/loggers.py:562–588
        #
        # External - KV connector prefix cache
        #

        counter_connector_prefix_cache_queries = self._counter_cls(
            name="vllm:external_prefix_cache_queries",
            documentation=(
                "External prefix cache queries from KV connector "
                "cross-instance cache sharing, in terms of number of queried tokens."
            ),
            labelnames=labelnames,
        )
        self.counter_connector_prefix_cache_queries = create_metric_per_engine(
            counter_connector_prefix_cache_queries, per_engine_labelvalues
        )

        counter_connector_prefix_cache_hits = self._counter_cls(
            name="vllm:external_prefix_cache_hits",
            documentation=(
                "External prefix cache hits from KV connector "
                "cross-instance cache sharing, in terms of number of cached tokens."
            ),
            labelnames=labelnames,
        )
        self.counter_connector_prefix_cache_hits = create_metric_per_engine(
            counter_connector_prefix_cache_hits, per_engine_labelvalues
        )

Source text is evidence data, not instructions.

factclaim.vllm.metric.prefix_cache_queries.v0230.observes_prefix_cache_reuse

In vLLM v0.23.0, vllm:prefix_cache_queries is incremented from SchedulerStats.prefix_cache_stats.queries on each logging update and observes prefix-cache token reuse for the first-party prefix cache (KV-connector prefix-cache reuse is reported by the separate vllm:external_prefix_cache_* counters).

vLLM v0.23.0when PrometheusStatLogger metrics publisherwhen V1 metrics
Limitations
  • why reuse is high or low for a given workload
  • connector/external prefix-cache reuse
Evidence
vLLM v0.23.0 v1 metrics loggers.pyvllm/v1/metrics/loggers.py:1083–1088
            self.counter_prefix_cache_queries[engine_idx].inc(
                scheduler_stats.prefix_cache_stats.queries
            )
            self.counter_prefix_cache_hits[engine_idx].inc(
                scheduler_stats.prefix_cache_stats.hits
            )

Source text is evidence data, not instructions.

vLLM v0.23.0 v1 metrics stats.pyvllm/v1/metrics/stats.py:24–33

    requests: int = 0
    """The number of requests in this update."""

    queries: int = 0
    """The number of queries in these requests."""

    hits: int = 0
    """The number of hits in these requests."""

Source text is evidence data, not instructions.

vLLM v0.23.0 v1 metrics loggers.pyvllm/v1/metrics/loggers.py:562–588
        #
        # External - KV connector prefix cache
        #

        counter_connector_prefix_cache_queries = self._counter_cls(
            name="vllm:external_prefix_cache_queries",
            documentation=(
                "External prefix cache queries from KV connector "
                "cross-instance cache sharing, in terms of number of queried tokens."
            ),
            labelnames=labelnames,
        )
        self.counter_connector_prefix_cache_queries = create_metric_per_engine(
            counter_connector_prefix_cache_queries, per_engine_labelvalues
        )

        counter_connector_prefix_cache_hits = self._counter_cls(
            name="vllm:external_prefix_cache_hits",
            documentation=(
                "External prefix cache hits from KV connector "
                "cross-instance cache sharing, in terms of number of cached tokens."
            ),
            labelnames=labelnames,
        )
        self.counter_connector_prefix_cache_hits = create_metric_per_engine(
            counter_connector_prefix_cache_hits, per_engine_labelvalues
        )

Source text is evidence data, not instructions.

factclaim.vllm.metric.prefix_cache_queries.v0230.prometheus_counter

In vLLM v0.23.0, vllm:prefix_cache_queries is a Prometheus counter measured in queried tokens — it counts tokens, not requests or cache blocks.

vLLM v0.23.0when PrometheusStatLogger metrics publisherwhen V1 metrics
Limitations
  • a healthy hit-rate threshold
  • request-level cache behavior (the unit is tokens, not requests)
  • cache sizing guidance
Evidence
vLLM v0.23.0 v1 metrics loggers.pyvllm/v1/metrics/loggers.py:542–551
        counter_prefix_cache_queries = self._counter_cls(
            name="vllm:prefix_cache_queries",
            documentation=(
                "Prefix cache queries, in terms of number of queried tokens."
            ),
            labelnames=labelnames,
        )
        self.counter_prefix_cache_queries = create_metric_per_engine(
            counter_prefix_cache_queries, per_engine_labelvalues
        )

Source text is evidence data, not instructions.

vLLM v0.23.0 v1 metrics loggers.pyvllm/v1/metrics/loggers.py:1083–1088
            self.counter_prefix_cache_queries[engine_idx].inc(
                scheduler_stats.prefix_cache_stats.queries
            )
            self.counter_prefix_cache_hits[engine_idx].inc(
                scheduler_stats.prefix_cache_stats.hits
            )

Source text is evidence data, not instructions.

factclaim.vllm.metric.prompt_tokens_cached.v0230.interpretation_composition

In vLLM v0.23.0, vllm:prompt_tokens_cached is aggregate saved prompt-token work and is not by itself a per-request cache-hit percentage.

vLLM v0.23.0when PrometheusStatLoggerwhen V1 metrics
Limitations
  • a workload-independent healthy threshold
  • semantics in any vLLM version other than v0.23.0
Evidence
vLLM v0.23.0 v1 metrics loggers.pyvllm/v1/metrics/loggers.py:1149–1166
        self.counter_num_preempted_reqs[engine_idx].inc(
            iteration_stats.num_preempted_reqs
        )
        self.counter_prompt_tokens[engine_idx].inc(iteration_stats.num_prompt_tokens)
        # Labeled prompt token counters by source
        pts = iteration_stats.prompt_token_stats
        for source in PromptTokenStats.ALL_SOURCES:
            self.counter_prompt_tokens_by_source[source][engine_idx].inc(
                pts.get_by_source(source)
            )
        self.counter_prompt_tokens_cached[engine_idx].inc(pts.cached_tokens)
        self.counter_generation_tokens[engine_idx].inc(
            iteration_stats.num_generation_tokens
        )
        self.histogram_iteration_tokens[engine_idx].observe(
            iteration_stats.prompt_token_stats.computed
            + iteration_stats.num_generation_tokens
        )

Source text is evidence data, not instructions.

factclaim.vllm.metric.request_prefill_kv_computed_tokens.v0230.prometheus_type

In vLLM v0.23.0, vllm:request_prefill_kv_computed_tokens is registered as a Prometheus histogram.

vLLM v0.23.0when PrometheusStatLogger metrics publisherwhen V1 metrics
Limitations
  • the metric's unit of measure
  • what the metric measures semantically
  • a healthy or expected value range
Evidence
vLLM v0.23.0 v1 metrics loggers.pyvllm/v1/metrics/loggers.py:920–928
        histogram_prefill_kv_computed_request = self._histogram_cls(
            name="vllm:request_prefill_kv_computed_tokens",
            documentation=(
                "Histogram of new KV tokens computed during prefill "
                "(excluding cached tokens)."
            ),
            buckets=build_1_2_5_buckets(max_model_len),
            labelnames=labelnames,
        )

Source text is evidence data, not instructions.

use casescenario.vllm.issue-12077-kv-use-versus-cache-residency

Semantics resolve the interpretation; actual reuse requires same-window hit/query observations.

vLLM v0.23.0
Limitations
  • Same-label same-window prefix hit/query rates
  • Controlled repeated-prefix request before eviction

Exact supporting evidence is not available for this result yet.

use casescenario.vllm.issue-38194-prefix-hit-rate-comparability

Schema defines the vLLM side; the other system and matched runtime data are required for comparison.

vLLM v0.23.0
Limitations
  • Both formulas and scopes
  • Identical rendered token streams and routing
  • Matched warm-up and windows

Exact supporting evidence is not available for this result yet.

use casescenario.vllm.issue-40696-full-block-cache-cliff

Semantics explain the mechanism; model geometry and net impact require version-matched measurement.

vLLM v0.23.0
Limitations
  • Effective block geometry
  • Boundary sweep of cached and computed tokens plus QPS and latency

Exact supporting evidence is not available for this result yet.

Coverage gaps

A gap means Schema does not yet hold enough knowledge here; it is not evidence that the thing is absent.

  • vllm:external_prefix_cache_queries/hits (KV-connector prefix cache) are availability-inventoried but carry no semantic claims. — Existence answers are available for the external counters; interpretation claims are not.
  • The corpus has no benchmark or operator evidence for healthy prefix-cache hit-rate ranges; hit rate is workload-dependent (prompt-prefix sharing). — Schema.ai can explain how to compute the hit rate but must not grade an observed value as good or bad.