GPU资源监控-服务器显卡抢占-显卡空闲时运行程序

GPU资源监控-服务器显卡抢占-显卡空闲时运行程序

相信很多同学会遇到这样一个问题,就是在服务器GPU有限并且是先到先得的抢占环境下,如何抢到服务器来运行自己的程序。
通常来说有很多同学可能使用的是watch -n nvidia-smi来人肉观察Gpu使用率但是这种方法。但是这种情况耗费太多精力了,实在是费力不讨好,这里我们可以借助shell脚本来实现对GPU使用的监控:

while :
do
	STRING=`nvidia-smi -a -i $1|grep 'Used GPU'`
	if  [ -n "$STRING" ];then
		echo `date -d today +"%Y-%m-%d %H:%M:%S"`:GPU $1:$STRING
		sleep 30
	else
		`CUDA_VISIBLE_DEVICES=$1 ./darknet detector train cfg/voc_tiny.data cfg/yolov3-tiny.cfg yolov3-tiny.conv.15 -dont_show -mjpeg_port 8090 -map`
		break
	fi
done

上述shell 命令是保证指定卡没有运行的程序时候执行我们的程序,但是GPU程序能不能运行的关键是能不能有足够的显存让程序跑起来,而不是有没有运行的程序,因此这里我们还有一个版本:

while :
do
	STRING=`nvidia-smi -a -i $1|grep Free|head -1| tr -cd "[0-9]"`
	B=7000
	#if  [ -n "$STRING" ];then
	if  [ "$STRING" -lt "$B" ];then
		echo `date -d today +"%Y-%m-%d %H:%M:%S"`:GPU $1:$STRING
		sleep 30
	else
		`CUDA_VISIBLE_DEVICES=$1 ./darknet detector train cfg/voc_tiny.data cfg/yolov3-tiny.cfg yolov3-tiny.conv.15 -dont_show -mjpeg_port 8090 -map`
		break
	fi
done

该shell实现了当显存大小满足条件的时候开始运行程序。

Have fun!

你可能感兴趣的:(其他技术,深度学习,linux)