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>
This commit is contained in:
root
2026-06-27 19:53:55 +02:00
commit 6f52d46267
24 changed files with 1549 additions and 0 deletions
+168
View File
@@ -0,0 +1,168 @@
# 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 |