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:
@@ -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 **~6–8 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: ~8–9 W, P8, Core 139 MHz
|
||||
GPU1: ~8–9 W, P8, Core 139 MHz
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Ursachen für hohen Idle-Verbrauch (P0/P5, 40–70 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 (~15–45 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 |
|
||||
Reference in New Issue
Block a user