Add real-time system performance charts to dashboard
Backend: GET /api/v1/system/performance endpoint using psutil (CPU/RAM) and nvidia-ml-py (GPU utilization, memory, temperature) with graceful fallback. Frontend: Chart.js line charts with rolling 60-sample history persisted to sessionStorage, flicker-free updates via persistent DOM and diff-based dynamic section refresh. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -47,3 +47,24 @@ class ProcessListResponse(BaseModel):
|
||||
|
||||
processes: List[str] = Field(description="Sorted list of unique process names")
|
||||
count: int = Field(description="Number of unique processes")
|
||||
|
||||
|
||||
class GpuInfo(BaseModel):
|
||||
"""GPU performance information."""
|
||||
|
||||
name: str | None = Field(default=None, description="GPU device name")
|
||||
utilization: float | None = Field(default=None, description="GPU core usage percent")
|
||||
memory_used_mb: float | None = Field(default=None, description="GPU memory used in MB")
|
||||
memory_total_mb: float | None = Field(default=None, description="GPU total memory in MB")
|
||||
temperature_c: float | None = Field(default=None, description="GPU temperature in Celsius")
|
||||
|
||||
|
||||
class PerformanceResponse(BaseModel):
|
||||
"""System performance metrics."""
|
||||
|
||||
cpu_percent: float = Field(description="System-wide CPU usage percent")
|
||||
ram_used_mb: float = Field(description="RAM used in MB")
|
||||
ram_total_mb: float = Field(description="RAM total in MB")
|
||||
ram_percent: float = Field(description="RAM usage percent")
|
||||
gpu: GpuInfo | None = Field(default=None, description="GPU info (null if unavailable)")
|
||||
timestamp: datetime = Field(description="Measurement timestamp")
|
||||
|
||||
Reference in New Issue
Block a user