nvidia-smi
表含义解释
参考:
P100
1 | +-----------------------------------------------------------------------------+ |
Titan X
1 | Thu Aug 3 14:00:03 2017 |
GPU
: GPU编号, 从0开始, 若有多台GPU, 则依次累加.Fan
: 风扇转速, 从0%到100%, N/A表示该GPU为被动散热,无风扇Name
: GPU名称, 此处为P100-PCIE...
和GTX TIT...
Temp
: 温度, 单位摄氏度Perf
: 性能状态, 从P0到P12, P0为最大性能, P12为最小性能Persistence-M
: 持续模式的状态, 持续模式开启时, 会加速GPU应用的启动时间, 但是会增大功耗.Pwr:Usage/Cap
: 能耗, 当前能耗/最大能耗, 单位瓦Bus-Id
: 设计GPU总线的东西, 其格式为domain:bus:device.function
Disp.A
: Display Active, 表示GPU的显示是否初始化Memory-Usage
: 显存使用情况, 当前使用显存/总显存Volatile GPU-Util
: 浮动的GPU利用率.Uncorr.ECC
: 关于ECCCompute M.
: 计算模式
nvidia-smi -q
1 | ==============NVSMI LOG============== |
nvidia-smi --help
1 | NVIDIA System Management Interface -- v375.66 |
特殊命令
获取GPU的当前温度
依次获得所有GPU卡的温度
1 | nvidia-smi -q 2>&1|grep -i "gpu current temp"|awk '{print $5}'| sed s/\%//g |
获得指定GPU卡的温度,添加-g
参数,后加GPU ID,从0开始索引
1 | nvidia-smi -q -g 0 2>&1|grep -i "gpu current temp"|awk '{print $5}'| sed s/\%//g |
获取GPU当前正在运行的进程
依次获得所有GPU卡的进程
1 | nvidia-smi -q 2>&1|grep -i "Process ID"|awk '{print $4}' |
获得指定GPU卡的温度,添加-g
参数,后加GPU ID,从0开始索引
获取GPU当前使用率
1 | nvidia-smi -q 2>&1|grep -i "Process ID"|awk '{print $4}' |
附: 使用python远程监控gpu状态,并返回json格式的数据。或者简单用shell脚本执行返回。
首先需配置SSH免密钥登录,在执行脚本的机器上重复执行。
1 | cd ~/.ssh |
python版本get-gpu-util.py
1 | #!/usr/bin/python |
输出如下
1 | [{"ip": "10.42.10.35", "card": 0, "gpu-util": 0}, {"ip": "10.42.10.41", "card": 0, "gpu-util": 99}, {"ip": "10.42.10.41", "card": 1, "gpu-util": 65}, {"ip": "10.42.10.41", "card": 2, "gpu-util": 85}, {"ip": "10.42.10.41", "card": 3, "gpu-util": 0}, {"ip": "10.42.10.62", "card": 0, "gpu-util": 90}, {"ip": "10.42.10.62", "card": 1, "gpu-util": 33}, {"ip": "10.42.10.62", "card": 2, "gpu-util": 91}, {"ip": "10.42.10.62", "card": 3, "gpu-util": 87}] |
Shell版本get-gpu-util.sh
1 |
|
运行命令bash get-gpu-util.sh
若无法配置SSH免密钥登录,比如需要在容器中运行等,则可以利用远程执行ssh的工具sshexec来执行,代码如下:
首先在每台机器上创建用于查询信息的用户名,无需管理员权限(nvidia-smi不需管理员)。
1 | useradd -s /bin/bash -mr gpu |
远程代码执行如下
1 |
|
若要使用命令行输入,shell代码如下
1 | #!/bin/bash |