msminhas93 / nviwatch

NviWatch: A blazingly fast rust based TUI for managing and monitoring NVIDIA GPU processes
GNU General Public License v3.0
176 stars 4 forks source link
bash command-line-tool cuda deeplearning gpu gpu-monitoring linux monitoring nvidia nvidia-smi nvml performant process-monitoring ratatui resource-monitoring rust terminal top tui ubuntu

NviWatch

NviWatch is an interactive terminal user interface (TUI) application for monitoring NVIDIA GPU devices and processes. Built with Rust, it provides real-time insights into GPU performance metrics, including temperature, utilization, memory usage, and power consumption.

Demo

https://github.com/user-attachments/assets/176565fe-4467-4129-b783-071543c52bf4

Benchmarks

We conducted performance benchmarks comparing nviwatch with other popular GPU monitoring tools: nvtop, nvitop, and gpustat. The results demonstrate nviwatch's efficiency in terms of CPU and memory usage. All tools except nvitop were run at 100ms interval. nvitop was set to 250ms because that is the minimum allowed value. The benchmark scripts and logs are available in the benchmarks folder. The test system had 32 GB RAM.

nvitop error for 100ms input

Benchmark Results

Tool CPU Usage (%) Memory Usage (%) Memory Usage (MB)
Mean / Max Mean / Max Mean / Max
nviwatch 0.28 / 10.0 0.12 / 0.12 18.26 / 18.26
nvtop 0.25 / 20.0 0.13 / 0.13 20.46 / 20.46
nvitop 0.88 / 10.0 0.26 / 0.26 41.07 / 41.07
gpustat 3.47 / 49.9 0.21 / 0.21 33.82 / 33.82

Benchmarks comparison

Installation Size Comparison

We used python-package-size for determining the pip package sizes. For nvtop We used this apt show nvtop | grep Installed-Size.

Tool Package Size
nviwatch 1.98 MB
nvitop 4.1 MB
gpustat 3.7 MB
nvtop 106 KB

Analysis

Features

Installing and Using the Tool

Option 1: Download Pre-built Binary

  1. Go to the project's GitHub repository.

  2. Navigate to the "Releases" section.

  3. Download the latest binary release for linux.

  4. Once downloaded, open a terminal and navigate to the directory containing the downloaded binary.

  5. Make the binary executable with the following command:

    chmod +x nviwatch
  6. You can now run the tool using:

    ./nviwatch

Option 2: Install via Cargo

If you have Rust and Cargo installed on your system, you can easily install NviWatch directly from crates.io:

  1. Open a terminal and run the following command:

    cargo install nviwatch
  2. Once the installation is complete, you can run NviWatch from anywhere in your terminal:

    nviwatch

Note: Ensure you have the NVIDIA Management Library (NVML) available on your system before running NviWatch.

Option 3: Build from Source

To build and run NviWatch, ensure you have Rust and Cargo installed on your system. You will also need the NVIDIA Management Library (NVML) available.

  1. Clone the repository:

    git clone https://github.com/msminhas93/nviwatch.git
    cd nviwatch
  2. Build the project:

    cargo build --release
  3. Run the application:

    chmod +x ./target/release/nviwatch
    ./target/release/nviwatch

Usage

NviWatch provides a command-line interface with several options:

Example:

./nviwatch --watch 500 --tabbed-graphs

Key Bindings

View Modes

The application supports three different view modes:

1. Default Mode

Shows all GPU information in a single view

2. Bar Mode

Presents GPU information using bar charts

3. Tabbed Mode: GPU graphs in tabs for multi GPU nodes

Displays GPU graphs in a tabbed interface

You can switch between these modes at any time using the corresponding key bindings.

Star History

Star History Chart

License

This project is licensed under the GNU General Public License v3.0. See the LICENSE file for details.

Contributing

Contributions are welcome! Please open an issue or submit a pull request for any improvements or bug fixes.

Acknowledgments