编写shell脚本,使用方式 ./GPU.sh 3000 10
#!/bin/bash
# 判断nvidia-smi命令是否存在
/usr/bin/nvidia-smi > /dev/null
if [ $? -eq 0 ]
then
echo 'nvidia-smi check pass' `date`
else
echo 'nvidia-smi not exists'
exit 1
fi
if [ X$1 = X -o X$2 = X ]; then
echo " Error: Missing parameter"
echo " usage: ./monitor.sh 采集时长(秒) 采集间隔(秒) "
echo "example: ./monitor.sh 300 10"
else
while ((i<$1/$2));do
count=`nvidia-smi -L|wc -l`
for ((j=0;j<$count;j++))
do
#GPU id
uuid=`nvidia-smi -q -i $j|grep 'UUID'|awk '{print $4}'`
#显存使用率
usage=`nvidia-smi -q -d MEMORY -i $j|grep -E 'Total|Used'|head -2|awk '{print $3}'|xargs echo|awk '{print $2/$1}'`
#内存详细信息
detail=`nvidia-smi -q -d MEMORY -i $j|grep -E 'Total|Used|Free'|head -3|awk '{print $3}'|xargs echo`
#GPU使用率
vol=`nvidia-smi -q -d UTILIZATION -i $j |grep -A 5 "GPU Utilization"|tail -1|awk '{print $3}'`
#GPU温度
temp=`nvidia-smi -q -d Temperature -i $j|grep 'GPU Current'|awk '{print $5}'`
dates=`date +%Y_%m_%d_%H:%m`
result="GPU:"$uuid" 显存使用率:"$usage" 内存详细信息:"$detail" GPU使用率:"$vol" 温度:"$temp" 时间:"$dates
echo $result
if [[ ! -f "result.txt" ]];then
touch result.txt
fi
echo $result >> result.txt
done
let i++
sleep $2
done
fi