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()