详解nvidia-smi
时间: 2025-05-07 08:09:52 浏览: 118
### nvidia-smi 命令详解
#### 1. 基本功能概述
`nvidia-smi` 是一种命令行工具,主要用于监控和管理 NVIDIA GPU 的状态与性能[^3]。通过该命令,用户可以轻松获取关于 GPU 占用率、显存使用情况以及温度等重要参数的信息。
#### 2. 查看基本 GPU 状态
运行 `nvidia-smi` 不带任何选项时,默认会显示当前系统的 GPU 列表及其基本信息,包括但不限于 GPU 名称、驱动版本、CUDA 版本、显存利用率及进程列表[^1]。
```bash
$ nvidia-smi
```
此命令输出的内容通常分为几个部分:概览区域展示整体资源利用状况;每张卡的具体数据则涵盖了功耗、频率、风扇转速等内容[^2]。
#### 3. 高级查询选项
为了更精确地控制所需信息的粒度或者调整某些硬件设置,可以通过附加不同的标志来扩展基础功能:
- **--query-gpu**: 自定义要提取的数据字段。
```bash
$ nvidia-smi --query-gpu=name,memory.total,memory.used,utilization.gpu --format=csv
```
上述例子中指定了只返回设备名称、总内存大小、已使用的内存量以及GPU利用率,并采用CSV格式呈现结果。
- **--loop-ms**: 设置轮询间隔时间(单位毫秒),持续刷新屏幕上的统计数值直到手动终止程序执行为止。
```bash
$ nvidia-smi dmon -s u -o T -f log.txt
```
- **persistence mode**: 启动持久模式可以让操作系统保持加载驱动即使没有任何应用程序正在请求访问GPU资源,从而减少上下文切换带来的开销。
```bash
$ sudo nvidia-smi -pm 1
```
#### 4. 进程管理和资源分配
除了单纯监视之外,还可以借助额外子命令实现更加精细的操作比如杀死特定ID号对应的任务实例或是设定最大功率限制等等:
- 杀死指定PID关联的所有线程:
```bash
$ kill $(ps aux | grep python | awk '{print $2}')
或者直接利用nvidia-smi内置方法清除僵尸进程:
$ nvidia-smi pkill -u username
```
- 修改单个或多个物理设备允许消耗的最大瓦数阈值:
```bash
$ sudo nvidia-smi -pl 200
```
以上仅列举了几项较为常见的应用场景,实际上还有许多其它潜在用途等待探索发现。
```python
import subprocess
def get_gpu_info():
result = subprocess.run(['nvidia-smi', '--query-gpu=memory.free', '--format=csv'], stdout=subprocess.PIPE)
free_memory = result.stdout.decode('utf-8').split('\n')[1:-1]
return [int(x.strip().replace(' MiB', '')) for x in free_memory]
free_memories = get_gpu_info()
print(free_memories)
```
上述 Python 脚本展示了如何调用 `subprocess` 库执行外部 shell 指令并解析其产生的标准输出流,进而获得各块独立显卡剩余可用空间数组形式的结果集。
阅读全文
相关推荐
















