PowerEdge: Useful nvidia-smi Queries for NVIDIA GPU Troubleshooting
Summary: Reference guide for nvidia-smi command-line queries used to monitor, log, and troubleshoot NVIDIA GPU cards in PowerEdge servers, including VBIOS version queries, GPU metrics logging, clock and power management, and additional diagnostic commands. ...
Instructions
VBIOS version
Query the VBIOS version of each device:
$ nvidia-smi --query-gpu=gpu_name,gpu_bus_id,vbios_version --format=csv name, pci.bus_id, vbios_version GRID K2, 0000:87:00.0, 80.04.D4.00.07 GRID K2, 0000:88:00.0, 80.04.D4.00.08
The following table describes the query parameters used in this command.
| Query | Description |
|---|---|
timestamp |
The timestamp of when the query was made in format "YYYY/MM/DD HH:MM:SS.msec". |
gpu_name |
The official product name of the GPU. This is an alphanumeric string. For all products. |
gpu_bus_id |
PCI bus ID as "domain:bus:device.function", in hex. |
vbios_version |
The BIOS of the GPU board. |
Query GPU metrics for host-side logging
This query is useful for monitoring the hypervisor-side GPU metrics.
This query works for both ESXi and XenServer:
$ nvidia-smi --query-gpu=timestamp,name,pci.bus_id,driver_version,pstate,pcie.link.gen.max, pcie.link.gen.current,temperature.gpu,utilization.gpu,utilization.memory, memory.total,memory.free,memory.used --format=csv -l 5
The following table describes the query parameters used in this command.
| Query | Description |
|---|---|
timestamp |
The timestamp of when the query was made in format "YYYY/MM/DD HH:MM:SS.msec". |
name |
The official product name of the GPU. This is an alphanumeric string. For all products. |
pci.bus_id |
PCI bus ID as "domain:bus:device.function", in hex. |
driver_version |
The version of the installed NVIDIA display driver. This is an alphanumeric string. |
pstate |
The current performance state for the GPU. States range from P0 (maximum performance) to P12 (minimum performance). |
pcie.link.gen.max |
The maximum PCI-E link generation possible with this GPU and system configuration. For example, if the GPU supports a higher PCIe generation than the system supports, then this reports the system PCIe generation. |
pcie.link.gen.current |
The current PCI-E link generation. These may be reduced when the GPU is not in use. |
temperature.gpu |
Core GPU temperature, in degrees C. |
utilization.gpu |
Percent of time over the past sample period during which one or more kernels was executing on the GPU. The sample period may be between 1 second and 1/6 second depending on the product. |
utilization.memory |
Percent of time over the past sample period during which global (device) memory was being read or written. The sample period may be between 1 second and 1/6 second depending on the product. |
memory.total |
Total installed GPU memory. |
memory.free |
Total free memory. |
memory.used |
Total memory allocated by active contexts. |
You can get a complete list of the query arguments by running: nvidia-smi --help-query-gpu
nvidia-smi usage for logging
Short-term logging
Add the option -f <filename> to redirect the output to a file.
Prepend timeout -t <seconds> to run the query for the specified number of seconds and stop logging.
Ensure that your query granularity is appropriately sized for the use required. The following table lists recommended logging intervals.
| Purpose | nvidia-smi -l value |
Interval | timeout -t value |
Duration |
|---|---|---|---|---|
| Fine-grain GPU behavior | 5 | 5 seconds | 600 | 10 minutes |
| General GPU behavior | 60 | 1 minute | 3600 | 1 hour |
| Broad GPU behavior | 3600 | 1 hour | 86400 | 24 hours |
Long-term logging
Create a shell script to automate the creation of the log file with timestamp data added to the filename and query parameters.
Add a custom cron job to /var/spool/cron/crontabs to call the script at the intervals required.
Additional low-level commands for clocks and power
Enable persistence mode before changing clock or power settings. Settings for clocks and power reset between program runs unless you enable persistence mode (PM) for the driver. The nvidia-smi command also runs faster when PM is enabled.
Run the following command to enable persistence mode:
nvidia-smi -pm 1
Clocks
The following table lists clock management commands.
| Command | Description |
|---|---|
nvidia-smi -ac <MEM clock, Graphics clock> |
Set application clocks |
nvidia-smi -q -d SUPPORTED_CLOCKS |
View supported clocks |
nvidia-smi -q -d CLOCK |
View current clock |
nvidia-smi --auto-boost-default=ENABLED -i 0 |
Enable boosting GPU clocks (K80 and later) |
nvidia-smi --rac |
Reset clocks back to base |
Power
The following table lists power management commands.
| Command | Description |
|---|---|
nvidia-smi -pl N |
Set power cap (maximum wattage the GPU will use) |
nvidia-smi -pm 1 |
Enable persistence mode |
nvidia-smi stats -i <device#> -d pwrDraw |
Provides continuous monitoring of detail stats such as power |
nvidia-smi --query-gpu=index,timestamp,power.draw,clocks.sm,clocks.mem,clocks.gr --format=csv -l 1 |
Continuously provides timestamped power and clock information |
Other useful commands
The following table lists additional useful commands for GPU management and diagnostics.
| Command | Description |
|---|---|
nvidia-smi -q |
Query all the GPUs seen by the driver and display all readable attributes for a GPU. |
nvidia-smi |
Displays current GPU status, driver information, and other statistics. |
nvidia-smi -l |
Scrolls the output of nvidia-smi continuously until stopped. |
nvidia-smi --query-gpu=index,timestamp,power.draw,clocks.sm,clocks.mem,clocks.gr --format=csv |
Provides timestamped power and clock information. |
nvidia-smi --query-gpu=gpu_name,gpu_bus_id,vbios_version --format=csv |
Query the VBIOS version of each GPU in a system. |
lspci -n | grep 10de |
Determines if the GPU is in compute mode or graphics mode. |
nvidia-smi nvlink -s -i <device#> |
Displays NVLink state for a specific GPU. |
gpuswitchmode --listgpumodes |
Displays the capability of GRID 2.0 cards and switching between compute and graphics. The package is not in the normal CUDA or NVIDIA driver. |
nvidia-smi -h |
Displays the nvidia-smi commands and syntax. |
nvidia-bug-report.sh |
Generates a bug report that is sent to a Level 3 support technician or NVIDIA. |
nvidia-smi --query-retired-pages=gpu_uuid,retired_pages.address,retired_pages.cause --format=csv |
Displays retired pages, GPU UUID, page fault address, and the cause of page fault. |
nvidia-smi stats |
Displays device statistics. |
nvcc --version |
Shows installed CUDA version. |
nvidia-smi pmon |
Displays process statistics in scrolling format. |
nvidia-smi nvlink -c -i <device#> |
Displays NVLink capabilities for a specific GPU. |
gpuswitchmode --gpumode graphics |
Changes the personality of the GPU to graphics from compute (M6 and M60 GPUs). |
gpuswitchmode --gpumode compute |
Changes the personality of the GPU to compute from graphics (M6 and M60 GPUs). |