lmcache--lmcache
91 行
3.1 KiB
Python
91 行
3.1 KiB
Python
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
"""MP Server logging subscriber — debug logs for store/retrieve/lookup events.
|
|
|
|
Logs are emitted via Python's standard logging module. When OpenTelemetry
|
|
is installed, ``init_logger`` automatically attaches an OTel
|
|
``LoggingHandler`` so records are forwarded to OTel when a
|
|
``LoggerProvider`` is configured at startup.
|
|
"""
|
|
|
|
# Future
|
|
from __future__ import annotations
|
|
|
|
# First Party
|
|
from lmcache.logging import init_logger
|
|
from lmcache.v1.mp_observability.event import Event, EventType
|
|
from lmcache.v1.mp_observability.event_bus import EventCallback, EventSubscriber
|
|
|
|
logger = init_logger(__name__)
|
|
|
|
|
|
class MPServerLoggingSubscriber(EventSubscriber):
|
|
"""Logs MP server store/retrieve/lookup events at debug level."""
|
|
|
|
def get_subscriptions(self) -> dict[EventType, EventCallback]:
|
|
return {
|
|
EventType.MP_STORE_START: self._on_store_start,
|
|
EventType.MP_STORE_END: self._on_store_end,
|
|
EventType.MP_RETRIEVE_START: self._on_retrieve_start,
|
|
EventType.MP_RETRIEVE_END: self._on_retrieve_end,
|
|
EventType.MP_LOOKUP_PREFETCH_START: self._on_lookup_prefetch_start,
|
|
EventType.MP_LOOKUP_PREFETCH_END: self._on_lookup_prefetch_end,
|
|
EventType.MP_VLLM_BLOCK_ALLOCATION: self._on_block_allocation,
|
|
}
|
|
|
|
def _on_store_start(self, event: Event) -> None:
|
|
logger.debug(
|
|
"MP store start: session=%s device=%s",
|
|
event.session_id,
|
|
event.metadata.get("device"),
|
|
)
|
|
|
|
def _on_store_end(self, event: Event) -> None:
|
|
logger.debug(
|
|
"MP store end: session=%s device=%s stored_count=%s",
|
|
event.session_id,
|
|
event.metadata.get("device"),
|
|
event.metadata.get("stored_count"),
|
|
)
|
|
|
|
def _on_retrieve_start(self, event: Event) -> None:
|
|
logger.debug(
|
|
"MP retrieve start: session=%s device=%s",
|
|
event.session_id,
|
|
event.metadata.get("device"),
|
|
)
|
|
|
|
def _on_retrieve_end(self, event: Event) -> None:
|
|
logger.debug(
|
|
"MP retrieve end: session=%s device=%s retrieved_count=%s",
|
|
event.session_id,
|
|
event.metadata.get("device"),
|
|
event.metadata.get("retrieved_count"),
|
|
)
|
|
|
|
def _on_lookup_prefetch_start(self, event: Event) -> None:
|
|
logger.debug(
|
|
"MP lookup/prefetch start: session=%s",
|
|
event.session_id,
|
|
)
|
|
|
|
def _on_lookup_prefetch_end(self, event: Event) -> None:
|
|
logger.debug(
|
|
"MP lookup/prefetch end: session=%s found_count=%s",
|
|
event.session_id,
|
|
event.metadata.get("found_count"),
|
|
)
|
|
|
|
def _on_block_allocation(self, event: Event) -> None:
|
|
records = event.metadata.get("records", [])
|
|
for rec in records:
|
|
logger.debug(
|
|
"vLLM block allocation: req_id=%s "
|
|
"new_blocks=%d new_tokens=%d "
|
|
"block_ids=%s",
|
|
rec.req_id,
|
|
len(rec.new_block_ids),
|
|
len(rec.new_token_ids),
|
|
rec.new_block_ids[:10],
|
|
)
|