nvidia-smi命令界面相关介绍、及拓展
1.什么是nvidia-smi
nvidia-smi是nvidia 的系统管理界面 ,其中smi是 System management interface 的缩写,它可以收集各种级别的信息,查看显存使用情况,显卡的温度… …。此外, 可以启用和禁用 GPU 配置选项 (如 ECC 内存功能)。
2.nvidia-smi命令
nvidia-sim简称NVSMI,提供监控GPU使用情况和更改GPU状态的功能,是一个跨平台工具。
3.nvidia-smi界面

4.在终端界面通过该命令的调用得到GPU相关信息
a.获取某一张卡某一进程GPU内存占用大小
nvidia-smi | grep pid | awk '{print 8}' | sed 's/MiB//'(例如pid为37593,在终端界面调用该命令,输出结果2869)(其他同上)( $8指第8列)
b.获取某一张卡进程GPU功耗
首先获取某一进程对应的卡号:nvidia-smi | grep pid | awk '{print 2};比如输出为0,而0对应的GPU功耗位于10行7列,所以先得到这个10行:gpu_card_line=expr 10 + 3 \* $gpu_card,则对应的GPU功耗为nvidia-smi | awk NR=="gpu_card_line"{'print 5'} | sed 's/W//' ;(0号卡输出结果为88)
gpu_card=
nvidia-smi | grep $pid | awk '{print $2}' | sed 's/MiB//'
gpu_card_line=expr 10 + 3 \* $gpu_cardgpu_power=
nvidia-smi | awk NR=="$gpu_card_line"{'print $5'} | sed 's/W//'
c.获取该卡的 内存使用率
该卡内存使用率同GPU功耗位于同一行,前面相同(0号卡输出结果为12540)
memory_usage=
nvidia-smi | awk NR=="$gpu_card_line"{'print $9'} | sed 's/MiB//'
d.获取该卡GPU使用率
同上(0号卡输出结果为89%)
gpu_per=
nvidia-smi | awk NR=="$gpu_card_line"{'print $13'}
综上,完整代码为:
gpu=
nvidia-smi | grep $pid | awk '{print $8}' | sed 's/MiB//'
gpu_card=nvidia-smi | grep $pid | awk '{print $2}' | sed 's/MiB//'
gpu_card_line=expr 10 + 3 \* $gpu_card
gpu_per='';
gpu_power='';
if [ "gpu" != "" ];then gpu_per=`nvidia-smi | awk NR=="gpu_card_line"{'print 13'}` gpu_power=`nvidia-smi | awk NR=="gpu_card_line"{'print 5'} | sed 's/W//'` memory_usage=`nvidia-smi | awk NR=="gpu_card_line"{'print $9'} | sed 's/MiB//'`
fi
以上命令也可在终端自行试验,直接运行nvidia-smi相关命令;以上编写较简陋,后期随时更改
