NVIDIA-SMI命令
flyish
持久模式(-pm)
持久模式允许用户将NVIDIA-SMI设置持久化,即使在系统重启后也能生效。这意味着可以在会话期间配置设备,而无需每次重新启动系统时都手动重新应用设置。
-
语法:
nvidia-smi -pm <1/0> 1:启用持久模式 0:禁用持久模式
-
示例:
- 启用持久模式:
nvidia-smi -pm 1
- 禁用持久模式:
nvidia-smi -pm 0
- 启用持久模式:
错误纠正代码(ECC)(-e)
**ECC(错误纠正代码)**是一种用于检测和纠正设备内存错误的技术。启用ECC可以提高系统稳定性,防止因内存错误而导致的数据损坏。
-
语法:
nvidia-smi -e <1/0> 1:启用 ECC 0:禁用 ECC
-
示例:
- 启用ECC:
nvidia-smi -e 1
- 禁用ECC:
nvidia-smi -e 0
- 启用ECC:
watch -n 1 nvidia-smi
是一个非常有用的命令,用于实时监控 NVIDIA GPU 的状态。这个命令会每秒刷新一次 nvidia-smi
的输出,使你能够动态地查看 GPU 的使用情况和性能指标。
命令解析
watch
: 这是一个标准的 Linux 命令,用于周期性地执行某个命令,并在终端中显示其输出。-n 1
: 这个选项告诉watch
每隔 1 秒执行一次指定的命令。你可以将1
改为任何其他数值来调整刷新间隔(例如-n 5
表示每 5 秒刷新一次)。nvidia-smi
: 这是 NVIDIA 提供的系统管理接口工具,用于管理和监控 NVIDIA GPU 设备。
使用场景
watch -n 1 nvidia-smi
主要用于以下几种场景:
- 实时监控 GPU 使用情况:当你运行深度学习模型、科学计算或其他需要大量 GPU 资源的任务时,可以使用此命令实时查看 GPU 的利用率、显存使用情况等信息。
- 调试和优化:通过观察 GPU 的负载变化,可以帮助你找到性能瓶颈或优化的机会。
- 监控 GPU 温度和功耗:特别是在长时间运行高负载任务时,监控温度和功耗有助于确保硬件安全。
示例输出
当你运行 watch -n 1 nvidia-smi
时,终端会显示类似如下的输出,并且每秒更新一次:
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 565.57.01 Driver Version: 565.57.01 CUDA Version: 12.7 |
|-----------------------------------------+------------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+========================+======================|
| 0 NVIDIA RTX A6000 On | 00000000:18:00.0 On | Off* |
| 36% 65C P0 91W / 300W | 47256MiB / 49140MiB | 2% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
自定义输出格式
如果你希望只显示特定的信息,可以通过 nvidia-smi
的查询模式(-q
)结合 grep
来过滤输出。例如,仅显示 GPU 利用率和显存使用情况:
watch -n 1 nvidia-smi --query-gpu=utilization.gpu,memory.used --format=csv
这将生成如下简洁的输出,每秒更新一次。
解释:
-
GPU: Graphics Processing Unit(图形处理单元),指的是显卡或图形处理器。
-
Persistence-M: 持久模式(Persistence Mode)。这个模式确保即使没有活动的应用程序使用GPU,驱动程序也不会卸载GPU上下文,从而减少启动延迟并提高性能。
-
Bus-Id: 总线ID(Bus Identifier),标识GPU在系统中的位置,通常由PCI总线编号、设备编号和功能编号组成。
-
Disp.A: 显示激活(Display Active),表示显示器是否连接到该GPU并启用。
-
Volatile Uncorr. ECC: 易失性不可纠正ECC错误(Volatile Uncorrectable ECC Errors),表示当前会话中发生的无法自动纠正的内存错误数量。
-
Fan: 风扇转速百分比(Fan Speed Percentage),表示风扇当前的转速相对于其最大转速的百分比。
-
Temp: 温度(Temperature),表示GPU当前的温度。
-
Perf: 性能状态(Performance State),表示GPU当前的工作状态等级。P0通常代表最高性能级别,P12通常代表最低功耗状态。
-
Pwr:Usage/Cap: 功率使用/容量(Power Usage/Capacity),表示当前功耗以及最大功率限制。
-
Memory-Usage: 内存使用情况(Memory Usage),表示已使用的显存和总显存的数量。
-
GPU-Util: GPU利用率(GPU Utilization),表示GPU在计算任务上的使用百分比。
-
Compute M.: 计算模式(Compute Mode),表示GPU当前的计算模式。默认模式允许所有进程访问GPU,而其他模式可能会限制访问权限。
-
MIG M.: Multi-Instance GPU模式(Multi-Instance GPU Mode),表示是否启用了MIG功能。MIG允许将一个物理GPU分割成多个逻辑实例,每个实例都可以独立运行不同的工作负载。
- ECC: 错误纠正代码(Error-Correcting Code),是一种用于检测和纠正内存错误的技术,可以提高系统的稳定性。
- N/A: 不适用(Not Applicable),表示该项不适用于当前配置或未启用。