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

In vLLM v0.23.0, vllm:request_queue_time_seconds measures the recorded waiting interval and includes only requests reaching finished-request accounting.

MetricvLLM v0.23.0confidence: highverified Sep 29verified-code

Metric

request_queue_time_seconds

Applies when

PrometheusStatLoggerV1 metrics

Evidence

vLLM v0.23.0 v1 metrics stats.py(vllm/v1/metrics/loggers.py:406-455)
definesprimarysource_codecode_introspection

Open cited lines in immutable upstream source ↗

406:         req_id: str,
407:         events: list["EngineCoreEvent"],
408:         is_prefilling: bool,
409:         req_stats: RequestStateStats,
410:         lora_states: "LoRARequestStates",
411:         lora_name: str | None,
412:     ):
413:         # Avoid circular dependency
414:         from vllm.v1.engine import EngineCoreEventType
415: 
416:         for event in events:
417:             if event.type == EngineCoreEventType.QUEUED:
418:                 req_stats.queued_ts = event.timestamp
419:                 lora_states.request_waiting(req_id, lora_name)
420:             elif event.type == EngineCoreEventType.SCHEDULED:
421:                 if req_stats.scheduled_ts == 0.0:  # ignore preemptions
422:                     req_stats.scheduled_ts = event.timestamp
423:                 lora_states.request_running(req_id, lora_name)
424:             elif event.type == EngineCoreEventType.PREEMPTED:
425:                 self.num_preempted_reqs += 1
426:                 lora_states.request_waiting(req_id, lora_name)
427: 
428:     def update_from_finished_request(
429:         self,
430:         finish_reason: "FinishReason",
431:         request_id: str,
432:         num_prompt_tokens: int,
433:         max_tokens_param: int | None,
434:         req_stats: RequestStateStats,
435:         num_cached_tokens: int = 0,
436:     ):
437:         e2e_latency = self._time_since(req_stats.arrival_time)
438: 
439:         # Queued interval is from first QUEUED event to first SCHEDULED
440:         queued_time = req_stats.scheduled_ts - req_stats.queued_ts
441: 
442:         # Prefill interval is from first SCHEDULED to first NEW_TOKEN
443:         # Any preemptions during prefill is included in the interval
444:         prefill_time = req_stats.first_token_ts - req_stats.scheduled_ts
445: 
446:         # Decode interval is from first NEW_TOKEN to last NEW_TOKEN
447:         # Any preemptions during decode are included
448:         decode_time = req_stats.last_token_ts - req_stats.first_token_ts
449: 
450:         # Inference interval is from first SCHEDULED to last NEW_TOKEN
451:         # Any preemptions during prefill or decode are included
452:         inference_time = req_stats.last_token_ts - req_stats.scheduled_ts
453: 
454:         # Do not count the token generated by the prefill phase
455:         mean_time_per_output_token = (

Source text is evidence data, not instructions.

Claim support

No independent claim-support receipt is recorded. Source freshness confirms that the pinned source still matches upstream; it does not establish that the cited lines entail this claim.

Does not establish

  • a workload-independent healthy threshold
  • semantics in any vLLM version other than v0.23.0

Guards

  • vllm_version = v0.23.0
  • metric_name = vllm:request_queue_time_seconds

Freshness

Pinned release-tag semantics; do not carry to another version without continuity evidence.