A simple desktop application for Linux (XFCE/GNOME) to monitor NVIDIA GPU usage, memory, temperature, power, and running GPU processes in real time.
Built with C++, wxWidgets, CMake, and NVIDIA Management Library (NVML).
- Real-time GPU Monitoring:
- GPU name, utilization, memory usage, temperature, and power usage.
- Timeline charts for memory, utilization, and temperature (like Task Manager).
- Support monitoring multiple NVIDIA GPUs.
- Process List:
- Shows all processes using the GPU (compute/graphics/both).
- Efficiently updates with minimal flicker.
- Cross-Desktop:
- Works on XFCE, GNOME, and other Linux desktops (uses GTK via wxWidgets).
- Linux with NVIDIA GPU and proprietary driver
libnvidia-ml-dev(NVML)- wxWidgets 3.x (GTK)
- GCC (g++), CMake 3.10+
- Git (optional)
sudo apt update
sudo apt install build-essential cmake libwxgtk3.0-gtk3-dev libnvidia-ml-devgit clone https://github.com/lehoai/NvidiaGpuProfiler.git
cd Todo
mkdir build && cd build
cmake ..
make./GPUProfilerinclude/
GpuData.h # Data structures for GPU and process info
MainFrame.h # Main window and UI controls
Nvidia.h # NVML wrapper for GPU/process info
TimelineChart.h # Custom chart panel for time series
src/
main.cpp # App entry point
MainFrame.cpp # Main window logic and UI updates
Nvidia.cpp # NVML integration, process info
TimelineChart.cpp# Chart drawing logic
CMakeLists.txt # Build configuration
- wxWidgets for cross-platform GUI (uses GTK on Linux).
- NVML (
libnvidia-ml-dev) for direct, robust GPU and process info. - Efficient UI updates:
- Uses
Freeze()/Thaw()and only updates changed rows/cells in the process list to minimize flicker.
- Uses
- Custom timeline charts for memory, utilization, and temperature, using
wxGraphicsContext.
- Process names/paths are read from
/proc/<pid>/cmdline. - Requires NVIDIA proprietary driver and NVML support.
- SSH remote features are coming soon
MIT
