linux监控显存,空闲时运行或者发邮件(更新)

文章讲述了如何在Linux系统中使用bash脚本监控GPU的使用情况,当GPU空闲时自动运行指定的Python脚本,并通过邮件通知占用状态和运行结果。作者提供了详细的步骤和代码示例,包括使用`nvidia-smi`命令获取GPU占用信息,以及通过`mail`命令发送邮件到指定邮箱。
部署运行你感兴趣的模型镜像

linuxGPU空闲时运行代码:

为了抢占稀缺GPU资源,

通过bash代码实时监控,空闲时自动运行程序。

  1. 新建wg.sh文件
  2. copy以下代码
  3. 挂起,运行: nohup bash wg.sh > log_watch_gpu.log 2>&1 & 

(第三步注意挂起和bash文件路径要一致)

以下代码是监控当前linux服务器GPU空闲状态,并当空闲时自动运行需要的代码。

需要修改file为你想显卡空闲时运行的文件地址

还需要修改b的值,代表多大空余时运行。我设置的是0.4

res 表示监控显卡现在的占用比例

以下是完整代码

最后一列注释掉的代码是 挂起命令,关闭服务器端口仍然执行监控

更新,之前res没写在循环里 ,没有更新显存大小。

现在将res写入循环

res=$(nvidia-smi | \
    grep -E "[0-9]+MiB\s/" | \
    sed "s/^|//" | \
    awk '{print ($8" "$10)}' | \
    sed "s/\([0-9]\{1,\}\)MiB \([0-9]\{1,\}\)MiB/\1 \2/" | \
    awk '{print $1/$2}')
echo $res
b=0.4
sta=`expr $res \< $b`
while [ $res>0 ];
do  
    res=$(nvidia-smi | \
        grep -E "[0-9]+MiB\s/" | \
        sed "s/^|//" | \
        awk '{print ($8" "$10)}' | \
        sed "s/\([0-9]\{1,\}\)MiB \([0-9]\{1,\}\)MiB/\1 \2/" | \
        awk '{print $1/$2}')
    sta=`expr $res \< $b`
    if [ $sta -eq 1 ];
    then
        do
        file='xxx.py'
        echo '准备运行:'
        echo $file
        echo '现阶段占用情况:'
        echo $res
        python $file
    break
    fi
done
# nohup bash gpu_watch.sh > lwatch_gpu.log 2>&1 &

file 改成文件的绝对地址,file内的代码 文件都需要绝对路径,相对路径要和bash文件一致。

linuxGPU空闲时发送邮件:

Ubuntu系统安装 

sudo apt-get install mailutils

安装选择internet site

安装完毕,发送个文件测试一下

echo "hi 测试邮件是否发送成功"$res | mail -s "Subject" xxxx@xxx.com

QQ邮箱收不到。我用163能收到。

  1. 新建wg.sh文件
  2. copy以下代码
  3. 挂起,运行: nohup bash wg.sh > log_watch_gpu.log 2>&1 & 
res=$(nvidia-smi | \
    grep -E "[0-9]+MiB\s/" | \
    sed "s/^|//" | \
    awk '{print ($8" "$10)}' | \
    sed "s/\([0-9]\{1,\}\)MiB \([0-9]\{1,\}\)MiB/\1 \2/" | \
    awk '{print $1/$2}')
echo $res
b=0.2
# 判断显存占用是否大于0.2

while [ $res>0 ];
do  
    sta=`expr $res \< $b`
    res=$(nvidia-smi | \
    grep -E "[0-9]+MiB\s/" | \
    sed "s/^|//" | \
    awk '{print ($8" "$10)}' | \
    sed "s/\([0-9]\{1,\}\)MiB \([0-9]\{1,\}\)MiB/\1 \2/" | \
    awk '{print $1/$2}')
    
    if [ $sta -eq 1 ];
    then
        echo "4090显存占用情况"$res | mail -s "Subject" maoo11234@163.com
        file='/xxx/绝对路径.py'
        echo '准备运行:'
        echo $file
        echo '现阶段占用情况:'
        echo $res
        nohup python $file > /xxx/xxx/xxx/log_xxx.log 2>&1 &
        echo "4090开始跑xxx"$res | mail -s "Subject" xxxx@xxx.com
    break
    fi
done
# nohup bash wg.sh > lwatch_gpu.log 2>&1 &

参考:Ubuntu mail命令发送邮件_ubuntu 使用mail命令发送邮件-优快云博客

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值