Tiny add CPU resource monitoring for overload diagnosis (#16852)

This commit is contained in:
fzyzcjy
2026-01-10 12:48:18 +08:00
committed by GitHub
parent 3ed3b7ef7c
commit 32a569fb77
6 changed files with 82 additions and 0 deletions
+31
View File
@@ -0,0 +1,31 @@
import threading
import time
import psutil
def start_cpu_monitor_thread(component: str, interval: float = 5.0) -> threading.Thread:
from prometheus_client import Counter
cpu_seconds_total = Counter(
name="sglang:process_cpu_seconds_total",
documentation="Total CPU time consumed by this process (user + system)",
labelnames=["component"],
)
def monitor():
process = psutil.Process()
last_times = process.cpu_times()
while True:
time.sleep(interval)
curr_times = process.cpu_times()
delta = (curr_times.user - last_times.user) + (
curr_times.system - last_times.system
)
cpu_seconds_total.labels(component=component).inc(delta)
last_times = curr_times
t = threading.Thread(target=monitor, daemon=True)
t.start()
return t