Auf dem GB10 in meinem Lab hat nvidia-smi eine Lücke. In der Spalte Memory-Usage steht nur “Not Supported”:
| 0 NVIDIA GB10 On | 0000000F:01:00.0 Off | N/A |
| N/A 72C P0 63W / N/A | Not Supported | 96% Default |
Die gezielte Abfrage liefert auch nichts:
$ nvidia-smi --query-gpu=name,memory.total,memory.used --format=csv
name, memory.total [MiB], memory.used [MiB]
NVIDIA GB10, [N/A], [N/A]
Wie voll der Speicher ist, sehe ich so nicht auf einen Blick. Die Prozessliste von nvidia-smi funktioniert dagegen. Sie zeigt für jeden Prozess, wie viel GPU-Speicher er belegt.
Warum der Wert fehlt
GB10 hat keinen eigenen Grafikspeicher. CPU und GPU teilen sich denselben Arbeitsspeicher. Für so ein Gerät liefert der Treiber keine Gesamtwerte für den Speicher.
nvitop holt die Werte vom System
nvitop erkennt seit v1.6.1 Geräte mit Unified Memory. Für sie liest es den Systemspeicher aus. Ich habe nvitop aus dem aktuellen Git-Stand installiert:
git clone https://github.com/XuehaiPan/nvitop.git
cd nvitop
uv tool install .
Das ergibt die Version 1.7.3.dev4. Der GB10 zeigt jetzt eine Belegung:
╒═════════════════════════════════════════════════════════════════════════════╕
│ NVITOP 1.7.3.dev4 Driver Version: 580.173.02 CUDA Driver Version: 13.0 │
├───────────────────────────────┬──────────────────────┬──────────────────────┤
│ GPU Name Persistence-M│ Bus-Id Disp.A │ Volatile Uncorr. ECC │
│ Fan Temp Perf Pwr:Usage/Cap│ Memory-Usage │ GPU-Util Compute M. │
╞═══════════════════════════════╪══════════════════════╪══════════════════════╪════════════════════╕
│ 0 GB10 On │ 0000000F:01:00.0 Off │ N/A │ MEM: ██████▏ 68.7% │
│ N/A 72C P0 58W / N/A │ 83.62GiB / 121.7GiB │ 96% Default │ UTL: ████████▋ 96% │
╘═══════════════════════════════╧══════════════════════╧══════════════════════╧════════════════════╛
[ CPU: ████████▋ 17.2% UPTIME: 49.9 days ] ( Load Average: 4.01 5.91 6.54 )
[ MEM: ██████████████████████████████████▍ 68.7% ] [ SWP: ████████████████████▎ 92% ]
Der GPU-Balken und der Balken für den Hauptspeicher zeigen beide 68,7 %. Das ist derselbe Speicher.
Die Unterstützung für Unified Memory steckt auch in den Releases auf PyPI, die aktuelle Rechnung seit v1.7.2. Wer nicht aus Git installieren will, kommt also auch mit uv tool install nvitop ans Ziel.
Wie nvitop rechnet
Mit v1.7.2 hat nvitop die Rechnung für Unified Memory korrigiert (#234). Als frei gilt jetzt der verfügbare Speicher, also einschließlich des Caches, den der Kernel wieder freigeben kann. Als belegt gilt der Gesamtspeicher minus den verfügbaren Speicher.
Damit passt die Anzeige zu free -m. Dort stehen 124.610 MiB gesamt und 39.016 MiB verfügbar. Die Differenz von 85.594 MiB sind die 83,6 GiB, die nvitop anzeigt.
Was die Zahl bedeutet
Der Balken zeigt den Speicher des ganzen Systems, nicht nur die Allokationen der GPU. Auf meinem GB10 belegen die sieben GPU-Prozesse zusammen rund 50,4 GiB. Den Rest der 83,6 GiB belegen andere Prozesse und das System. Was jeder Prozess auf der GPU belegt, steht in nvitop weiter in der Prozessliste.
RTX Spark N1X
Auf dem N1X in meinem ASUS ProArt P16 zeigt nvitop die Belegung genauso an. Der N1X teilt sich den Speicher ebenfalls mit der CPU, und nvitop behandelt ihn wie den GB10.