> This page is for Brev, version Latest (default).
> For other versions, use one of these documentation indexes:
> - Latest (default): https://docs.nvidia.com/brev/latest/llms.txt

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.nvidia.com/brev/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.nvidia.com/brev/_mcp/server.

# Monitor GPU Usage with NVDashboard

> Install the NVDashboard JupyterLab extension to view live GPU utilization, memory, and throughput charts inside JupyterLab.

NVDashboard is an open-source extension that adds a GPU monitoring interface to JupyterLab, so you can monitor GPU utilization and memory while your notebook cells run instead of switching to a separate terminal to run `nvidia-smi`. Select the GPU icon in the left sidebar to open dashboards in the main work area.

This guide explains how to install and enable NVDashboard on a Brev instance.

> **Info**
>
> NVDashboard is already installed when you create your instance in **Single Container** mode using any of the [Featured Containers](/guides/development-tools/custom-containers#container-mode-options).

## Prerequisites

* A running Brev instance with an NVIDIA GPU
* JupyterLab 4.0 or newer on the instance (refer to [Running Jupyter Notebooks](/guides/development-tools/jupyter-notebooks))
* Python 3.11 or newer, with `uv` installed

## Install NVDashboard

#### Connect to Your Instance

```bash
brev shell my-instance
```

#### Activate the Virtual Environment

NVDashboard must be installed in the same Python environment that runs the JupyterLab server, otherwise JupyterLab will not detect it. On a Brev instance that environment is `$HOME/.venv`. If yours uses a different name or location, activate that path instead:

```bash
source "$HOME/.venv/bin/activate"
```

#### Install the Extension

```bash
uv pip install jupyterlab-nvdashboard
```

#### Verify the Installation

```bash
jupyter server extension list 2>&1 | grep -i nvdashboard
jupyter labextension list 2>&1 | grep -i nvdashboard
```

Both commands should report the extension as `enabled`. If either reports `disabled`, enable it before continuing:

```bash
jupyter server extension enable jupyterlab_nvdashboard
jupyter labextension enable jupyterlab-nvdashboard
```

> **Info**
>
> If `jupyter labextension list` shows a cross (X) next to `jupyterlab-nvdashboard`, the extension is not compatible with the currently installed JupyterLab version. Upgrade JupyterLab to version 4.0 or later before proceeding.

#### Restart JupyterLab

Restart JupyterLab so it picks up the new extension, then reload your browser tab. Use the first option if JupyterLab was preinstalled on the instance, or the second if you installed it manually.

**`Pre-installed`**

```bash title="Pre-installed"
sudo systemctl restart jupyter.service
```

**`Installed manually`**

```bash title="Installed manually"
jupyter lab stop 8888
jupyter lab --no-browser --port=8888
```

> **Warning**
>
> Save your work before restarting JupyterLab, as active sessions may be interrupted.

## Open the Dashboards

Click the GPU icon in the JupyterLab left sidebar to see the available dashboards. Each one opens as a tab in the main area.

| Dashboard             | What it shows                                            |
| --------------------- | -------------------------------------------------------- |
| **GPU Memory**        | Memory used compared to total, per GPU                   |
| **GPU Utilization**   | GPU compute utilization, expressed as a percentage       |
| **GPU Resources**     | Utilization and memory over time                         |
| **Machine Resources** | CPU, memory, disk, and network activity                  |
| **PCIe Throughput**   | Data transfer between host memory and GPU memory         |
| **NVLink Throughput** | Data transfer between GPUs, as a bar chart or a timeline |

> **Tip**
>
> Drag a dashboard tab to the side of the main area to split the view. The charts and metrics stay visible while your notebook cells run.

For instructions on using NVDashboard, refer to the [NVDashboard README](https://github.com/rapidsai/jupyterlab-nvdashboard#jupyterlab-nvdashboard).

## Notes and Limitations

* NVLink dashboards require GPUs that are connected to each other by NVLink. Having more than one GPU does not guarantee that NVLink is present. Verify the topology with `nvidia-smi topo -m`.
* Charts update every 100 ms by default. Raise the interval under **Settings > Settings Editor > NVDashboard** to reduce overhead.

## Getting Help

If the dashboards still do not work after following this guide, contact support at [brev-support@nvidia.com](mailto:brev-support@nvidia.com) with:

* Your instance name, ID, and deployment mode.
* Whether the GPU icon is visible in the sidebar and whether the charts display any data.
* The output of `jupyter server extension list` and `jupyter labextension list`.
* Your Python and JupyterLab versions, along with the environment where they were installed.

## What's Next

#### [Custom Containers](/guides/development-tools/custom-containers)

Run Docker and Docker Compose workloads with GPU access.

#### [File Transfer with SCP](/guides/development-tools/file-transfer-scp)

Move files between your local machine and your instance.