@tduncan / Nvidia-Optimization-Stack-VLLM Mirror · read-only / commits / 36f1dc19ae
Fork 0

A high-throughput and memory-efficient inference and serving engine for LLMs

Mirrored from https://github.com/tduncan-lum/Nvidia-Optimization-Stack---VLLM.git

Synced Nov 5, 17:15 UTC

feat(grpc): add periodic stats logging and servicer log forwarding (#38333)

Signed-off-by: Chang Su <chang.s.su@oracle.com>

Chang Su committed Mar 31, 2026 at 15:50 UTC 36f1dc19ae7ac50efe2d916997bf77935d67588f
1 file changed +15
vllm/entrypoints/grpc_server.py
+15
@@ -37,6 +37,7 @@ except ImportError:
37
38 import uvloop
39
40 +from vllm import envs
41 from vllm.engine.arg_utils import AsyncEngineArgs
42 from vllm.entrypoints.utils import log_version_and_model
43 from vllm.logger import init_logger
@@ -113,6 +114,18 @@ async def serve_grpc(args: argparse.Namespace):
114 logger.info("vLLM gRPC server started on %s", address)
115 logger.info("Server is ready to accept requests")
116
117 + # Start periodic stats logging (mirrors the HTTP server's lifespan task)
118 + if not args.disable_log_stats:
119 +
120 + async def _force_log():
121 + while True:
122 + await asyncio.sleep(envs.VLLM_LOG_STATS_INTERVAL)
123 + await async_llm.do_log_stats()
124 +
125 + stats_task = asyncio.create_task(_force_log())
126 + else:
127 + stats_task = None
128 +
129 # Handle shutdown signals
130 loop = asyncio.get_running_loop()
131 stop_event = asyncio.Event()
@@ -130,6 +143,8 @@ async def serve_grpc(args: argparse.Namespace):
143 logger.info("Interrupted by user")
144 finally:
145 logger.info("Shutting down vLLM gRPC server...")
146 + if stats_task is not None:
147 + stats_task.cancel()
148 await server.stop(grace=5.0)
149 logger.info("gRPC server stopped")
150 async_llm.shutdown()