Files
docu/pve2/09_GPU-Idle-vollstaendig.md
T
root 6f52d46267 Initiale Infrastruktur-Dokumentation pve1 und pve2.
Enthält Host-Doku, MQTT/HA, Git-Setup, Power-Monitoring und GPU-Idle (pve2).

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-27 19:53:55 +02:00

169 lines
5.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# GPU Idle & Power Monitoring — pve2
Stand: Juni 2026 · Host: **pve2** · 2× NVIDIA GeForce GTX 1080
## Ziel
GTX 1080 im Headless-Betrieb sollen im Leerlauf **~68 W pro GPU (P8)** verbrauchen und bei Bedarf für LXC/Compute verfügbar bleiben — **ohne** GPU-Passthrough an VMs.
Typische Idle-Messung bei korrekter Konfiguration:
```
GPU0: ~89 W, P8, Core 139 MHz
GPU1: ~89 W, P8, Core 139 MHz
```
---
## Ursachen für hohen Idle-Verbrauch (P0/P5, 4070 W gesamt)
| Ursache | Symptom | Fix |
|---------|---------|-----|
| **Persistence Mode aus / Daemon tot** | P0 oder P5, `Idle: Not Active` | `nvidia-persistenced` + `-pm 1` (siehe unten) |
| **NVIDIA-Devices in LXC ohne Nutzung** | Treiber hält GPUs wach, Wechsel 139↔1657 MHz | Mounts entfernen (CT 101) |
| **Echter GPU-Load** | Prozesse in `nvidia-smi`, Encoder/Decoder > 0 | Prozess finden und beenden |
| **Häufiges `nvidia-smi`-Polling** | Kurzzeitiges Aufwachen | GPU-Messung seltener (z. B. 60 s) |
| **Neuer Treiber (580.x) ohne PM** | Pascal bleibt in P5 | Persistence Mode ist Pflicht |
**Nicht zutreffend auf pve2:** VFIO-GPU-Passthrough (GPUs hängen am Host-Treiber, nicht an VMs).
---
## 1. NVIDIA Persistence Mode (Pflicht für Headless P8)
Auf Headless-Linux-Systemen ohne Display schaltet der Treiber GTX-1080-Karten nach Last oft **nicht** zuverlässig in **P8** zurück, wenn Persistence Mode aus ist.
### Prüfen
```bash
nvidia-smi --query-gpu=index,power.draw,pstate,persistence_mode,clocks.gr --format=csv
```
Erwartung im Idle: `P8`, `Enabled`, ~139 MHz Core.
### Dauerhaft einrichten (pve2)
Service-Dateien liegen im Repo unter `deploy/nvidia-persistenced/`:
```bash
cp deploy/nvidia-persistenced/nvidia-persistenced.service /etc/systemd/system/
mkdir -p /etc/systemd/system/nvidia-persistenced.service.d
cp deploy/nvidia-persistenced/override.conf /etc/systemd/system/nvidia-persistenced.service.d/
systemctl daemon-reload
systemctl enable --now nvidia-persistenced
```
**Wichtig:** Die Option `--user-persistence-mode` ist ungültig und ließ den Dienst sofort wieder beenden — daher der Fix im Repo.
### Manuell (bis Reboot)
```bash
nvidia-smi -pm 1
```
### Status prüfen
```bash
systemctl status nvidia-persistenced
nvidia-smi -q | grep -E 'Performance State|Idle|Persistence'
fuser -v /dev/nvidia* # sollte leer sein im Idle
```
---
## 2. LXC: Wer braucht `/dev/nvidia*`?
| CT | Name | GPU-Mounts | Grund |
|----|------|------------|-------|
| **101** | docker | **Nein** (entfernt) | Frigate nutzt **Intel iGPU (VAAPI)**, NVIDIA in `compose.yml` auskommentiert |
| **110** | AIDEV | **Ja** | Jupyter/ML bei Bedarf |
| **109** | media | Nur wenn aktiv genutzt | Gestoppt → kein Mount nötig |
### Frigate (CT 101)
- Detector: **OpenVINO** (CPU/iGPU)
- Record-Streams: `hwaccel_args: preset-vaapi`
- Docker-Devices: `/dev/dri/renderD128`, `/dev/dri/card0` (Intel)
- **Kein** `deploy.resources.devices` NVIDIA in `compose.yml`
NVIDIA-Bind-Mounts in `/etc/pve/lxc/101.conf` sind auskommentiert (Juni 2026). Nach CT-Neustart:
```bash
pct reboot 101
pct exec 101 -- ls /dev/nvidia* # sollte fehlen
pct exec 101 -- docker ps # frigate healthy
```
---
## 3. Power-Monitoring (`pve-power-mqtt`)
Der Agent liest GPU-Leistung via `nvidia-smi`. Das ist **kein** Dauerlast-Compute, kann aber GPUs kurz aus P8 wecken.
Empfehlung:
- CPU/RAPL: alle **5 s** (MQTT → Home Assistant)
- GPU: seltener messen oder nur wenn `estimated_total` GPU-Anteil braucht
Verifikation ohne Agent-Einfluss:
```bash
systemctl stop pve-power-mqtt
sleep 60
nvidia-smi --query-gpu=power.draw,pstate --format=csv
systemctl start pve-power-mqtt
```
---
## 4. Troubleshooting
### GPUs hängen in P0/P5 (~1545 W)
1. `systemctl status nvidia-persistenced` — läuft er?
2. `nvidia-smi -pm 1`
3. LXC mit GPU-Mounts identifizieren: `grep nvidia /etc/pve/lxc/*.conf`
4. Prozesse: `nvidia-smi`, `fuser -v /dev/nvidia*`
5. Host neu starten (letzter Ausweg)
### Wechsel zwischen 139 MHz und 1657 MHz (eine GPU ~44 W)
Typisch wenn **mehrere Consumer** den Treiber ansprechen (LXC-Mounts + Monitoring). CT 101 ohne NVIDIA-Mounts behebt einen großen Teil.
### Dummy-HDMI-Stecker
Nur erwägen, wenn **mit** Persistence Mode weiterhin kein P8 erreichbar ist. Auf pve2 aktuell **nicht nötig** (P8 stabil mit persistenced).
### Treiber
Installiert: **580.95.05** (Pascal). Für Idle ist Persistence Mode wichtiger als Downgrade — bei Bedarf 550.x LTS testen.
---
## 5. Referenz-Befehle
```bash
# Schnellcheck
nvidia-smi
# Power über Zeit (15 s Abstand)
watch -n 15 'nvidia-smi --query-gpu=index,power.draw,pstate,clocks.gr --format=csv'
# LXC GPU-Konfiguration
grep -H nvidia /etc/pve/lxc/*.conf
# MQTT Power Agent
systemctl status pve-power-mqtt
journalctl -u pve-power-mqtt -f
```
---
## Änderungshistorie
| Datum | Änderung |
|-------|----------|
| 2026-06-27 | CT 101: NVIDIA-Mounts entfernt (Frigate = VAAPI) |
| 2026-06-27 | `nvidia-persistenced` repariert (ungültiger CLI-Flag entfernt) |
| 2026-06-27 | Doku angelegt, P8 Idle ~8 W pro GPU verifiziert |