GPU监控(一)将nvidia-smi相关信息保存在log文件中

一、需求背景和目标

要将nvidia-smi信息记录下来保存在log文件中,后续通过log文件中的内容生成显存使用量折线图,便于进行GPU用量监控。

本文章记录需求实现第一部分:将nvidia-smi信息记录下来保存在log文件中

二、实现思路

1、每天自动生成一个log文件,命名格式为:gpu_usage_yyyy_mm_dd.log。
2、确定log文件中需要记录的内容:日期、时间、GPU编号、UUID、GPU名字/类型、显存使用率、GPU使用率、GPU最大值。用echo写入表头。
其中GPU编号、UUID、GPU名字/类型是在多卡场景下使用的。
3、利用nvidia-smi --query-gpu获取所需信息。
4、把数据写入log文件

三、代码实现

1、每日自动生成log文件

date = $(date +"%Y-%m-%d") #获取当日日期
log = "./gpu_usage_$date.log" #log文件存放的位置
# 查找log文件是否存在,若不存在,则创建文件,并将表头写入
if [ ! -f "$log" ]; then
    echo "use_date,use_time,gpu_index,gpu_uuid,gpu_name,gpu_util,mem_use_snap_mib,mem_mib_max" >> "$log"
fi

2、利用nvidia-smi --query-gpu获取所需信息

use_time = $(date +"%Y-%m-%d,%H:%M:%S") # 获取日期和时间,此处是需求方要求。
# 也可以直接通过nvidia-smi --query-gpu=timestamp获取时间戳
gpu = $(nvidia-smi --query-gpu=index,uuid,name,utilization.gpu,memory.used,memory.total --format=csv,noheader,nounits)

# 循环遍历每一张显卡信息
while IFS=',' read -ra gpu_i;do
    gpu_index=${gpu_i[0]}
    gpu_uuid=${gpu_i[1]}
    gpu_name=${gpu_i[2]}
    gpu_util=${gpu_i[3]}
    mem_use_snap_mib=${gpu_i[4]}
    mem_mib_max=${gpu_i[5]}
    
    echo "$use_time,$gpu_index,$gpu_uuid,$gpu_name,$gpu_util,$mem_use_snap_mib,$mem_mib_max" >> "$log"
done <<<"$gpu"

3、最后记得crontab -e加入到定时任务中,不断执行此脚本实现监控功能。也可以nvidia-smi后面加 l1 ,即每秒执行一次。

四、实现效果

nvidia-smi信息:
nvidia-smi信息
log文件记录的内容:
log文件记录的内容

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值