Real-time GPU monitor for NVIDIA DGX Spark and other unified memory (UMA) systems
Project description
sparkstat
A real-time GPU monitor for NVIDIA DGX Spark and other unified memory architecture (UMA) systems.
Unlike gpustat or nvidia-smi, which report "Memory-Usage: Not Supported" on iGPU/UMA systems, sparkstat combines nvidia-smi metrics with /proc/meminfo to provide an accurate view of system memory available to GPU workloads.
Key Features
- DRAM Monitoring: Color-coded usage bars (green/yellow/red) based on severity.
- Effective Available Memory: Calculates real GPU-allocatable memory (DRAM available + swap free).
- GPU Metrics: Utilization, temperature (color-coded), power, clock speed, and P-State.
- Alloc Metric: Reports GPU-allocated memory as a percentage of total DRAM, replacing the typically zeroed
utilization.memorymetric on iGPUs. - Process Breakdown: Per-process GPU memory allocation.
- Flexible Output: Full-screen in-place refresh on TTY, sequential output when piped.
- Zero Dependencies: Pure Python, using only the standard library.
Requirements
- Linux
- Python 3.9+
- NVIDIA driver (
nvidia-smi)
Installation
Install via pip:
pip install sparkstat
Install via pipx:
pipx install sparkstat
Install via uv:
uv tool install sparkstat
Quick install script:
curl -fsSL https://raw.githubusercontent.com/kooyunmo/sparkstat/main/install.sh | sh
Usage
sparkstat # Single snapshot
sparkstat -i # Watch mode, default 3s interval
sparkstat -i 1 # Watch mode, 1s interval
sparkstat -i 0 # Single snapshot (same as no -i)
sparkstat --no-proc # Hide process list
sparkstat --no-header # Suppress timestamp header
sparkstat --no-color # Disable color
sparkstat --force-color # Force color when piped
sparkstat -v # Show version
Example Output
spark-838f Fri Apr 10 01:05:26 2026 NVIDIA GB10
═════════════════════════════════════════════════════════
DGX Spark · 121.7GiB Unified Memory (UMA)
───────────────────────────────────────────────────────
DRAM [█████░░░░░] 53.8% 65.5GiB / 121.7GiB
Avail 69.3GiB (DRAM: 56.2GiB + Swap free: 13.1GiB)
Swap [█░░░░░░░░░] 18.1% 2.9GiB / 16.0GiB
───────────────────────────────────────────────────────
GPU NVIDIA GB10
Util GPU 2% │ Alloc 51% │ Temp 46°C
Pwr 13.2W │ Clk 2411MHz │ P-State P0
───────────────────────────────────────────────────────
Processes (1 active, 62.2GiB GPU alloc)
62928 VLLM::EngineCore 62.2GiB
═════════════════════════════════════════════════════════
Color Scheme
- Bars: Green <50%, Yellow 50-80%, Red >80%
- Temperature: Cyan <50°C, Yellow 50-70°C, Red >70°C
- GPU Utilization: Dim <10%, Green 10-50%, Yellow 50-80%, Red >80%
- Labels: Bold white
- GPU Name: Bold green
- Process Names & Clock: Cyan
- Power: Yellow
- Borders: Dim gray
Colors are automatically disabled when output is piped. Use --force-color to override this behavior.
License
MIT
Repository
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sparkstat-0.1.0.tar.gz.
File metadata
- Download URL: sparkstat-0.1.0.tar.gz
- Upload date:
- Size: 7.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e755e77de869932d6a7c27b5f24f3bea14be39fabee2e31707e8425bbe4ed738
|
|
| MD5 |
b4e74923ce707a195bbed38989a7b5a8
|
|
| BLAKE2b-256 |
4dc3c747e8038be5e46b38d6aebd1dbd05ad56afc268d6046252303bf685845e
|
Provenance
The following attestation bundles were made for sparkstat-0.1.0.tar.gz:
Publisher:
publish.yml on kooyunmo/sparkstat
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
sparkstat-0.1.0.tar.gz -
Subject digest:
e755e77de869932d6a7c27b5f24f3bea14be39fabee2e31707e8425bbe4ed738 - Sigstore transparency entry: 1282774632
- Sigstore integration time:
-
Permalink:
kooyunmo/sparkstat@8ddb77288439f9e93c0d67549e50692bca3f2d4f -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/kooyunmo
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@8ddb77288439f9e93c0d67549e50692bca3f2d4f -
Trigger Event:
push
-
Statement type:
File details
Details for the file sparkstat-0.1.0-py3-none-any.whl.
File metadata
- Download URL: sparkstat-0.1.0-py3-none-any.whl
- Upload date:
- Size: 7.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
52a3d3390ecb33456ada94ccc9d27238cf8ef54d7f3db9e814ff32cc6d4dae5e
|
|
| MD5 |
21c367d4b675424b63e7e1fd459a162f
|
|
| BLAKE2b-256 |
f425689e2c472ae8eb8324486da06e7ce374dd94c46f5d199d6e7062c5221f57
|
Provenance
The following attestation bundles were made for sparkstat-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on kooyunmo/sparkstat
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
sparkstat-0.1.0-py3-none-any.whl -
Subject digest:
52a3d3390ecb33456ada94ccc9d27238cf8ef54d7f3db9e814ff32cc6d4dae5e - Sigstore transparency entry: 1282774655
- Sigstore integration time:
-
Permalink:
kooyunmo/sparkstat@8ddb77288439f9e93c0d67549e50692bca3f2d4f -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/kooyunmo
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@8ddb77288439f9e93c0d67549e50692bca3f2d4f -
Trigger Event:
push
-
Statement type: