fix(2.0): GPU-Metrik findet Strix-Halo-Card dynamisch (card1) + GTT
Real-Box-Befund: GPU ist card1 (nicht hardcoded card0), Connector-Dirs uebersprungen. Zusaetzlich GTT (echter Unified-Memory-Pool) statt nur VRAM-Carve-out. Frontend zeigt GTT bevorzugt. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+19
-10
@@ -23,16 +23,25 @@ def _read_int(path: str) -> int | None:
|
||||
|
||||
|
||||
def _gpu_sysfs() -> dict | None:
|
||||
"""AMD-GPU-Auslastung + VRAM via sysfs (Linux). None, wenn nicht vorhanden."""
|
||||
base = "/sys/class/drm/card0/device"
|
||||
if not os.path.isdir(base):
|
||||
return None
|
||||
busy = _read_int(f"{base}/gpu_busy_percent")
|
||||
vram_used = _read_int(f"{base}/mem_info_vram_used")
|
||||
vram_total = _read_int(f"{base}/mem_info_vram_total")
|
||||
if busy is None and vram_used is None:
|
||||
return None
|
||||
return {"busy_percent": busy, "vram_used": vram_used, "vram_total": vram_total}
|
||||
"""AMD-GPU-Auslastung + Speicher via sysfs (Linux). Findet die Basis-Card
|
||||
dynamisch (Strix Halo ist oft card1, nicht card0) und überspringt die
|
||||
Connector-Verzeichnisse (card1-DP-1 …). Strix Halo nutzt Unified Memory →
|
||||
GTT ist der eigentliche große Pool; VRAM ist nur der kleine Carve-out."""
|
||||
for dev in sorted(glob.glob("/sys/class/drm/card*/device")):
|
||||
card = dev.split("/")[-2] # z.B. "card1" oder "card1-DP-1"
|
||||
if "-" in card: # Connector-Dir → kein GPU-Device
|
||||
continue
|
||||
busy = _read_int(f"{dev}/gpu_busy_percent")
|
||||
if busy is None:
|
||||
continue
|
||||
return {
|
||||
"busy_percent": busy,
|
||||
"vram_used": _read_int(f"{dev}/mem_info_vram_used"),
|
||||
"vram_total": _read_int(f"{dev}/mem_info_vram_total"),
|
||||
"gtt_used": _read_int(f"{dev}/mem_info_gtt_used"),
|
||||
"gtt_total": _read_int(f"{dev}/mem_info_gtt_total"),
|
||||
}
|
||||
return None
|
||||
|
||||
|
||||
def _temps() -> dict | None:
|
||||
|
||||
Reference in New Issue
Block a user