实时检测GPU使用率nvidia-smi

nvidia-smi --query-gpu=utilization.gpu --format=csv,noheader,nounits

为了判断所有 GPU 的利用率都小于阈值,可以循环检查每一个 GPU 的利用率。如果所有 GPU 的利用率都低于阈值,则增加空闲时间计数;否则,重置空闲时间计数。

下面是一个改进后的脚本,判断所有 GPU 的利用率都小于阈值:

#!/bin/bash

# 设置检测的时间间隔(分钟)
interval=10m

# 设置检测的总时长(秒)
total_duration=$((60 * 60))  # 1 小时

# 设置利用率阈值(%)
threshold=5

# 初始化变量
idle_time=0

while [ $idle_time -lt $total_duration ]; do
  # 获取所有 GPU 的利用率
  utilizations=$(nvidia-smi --query-gpu=utilization.gpu --format=csv,noheader,nounits)

  all_below_threshold=true
  for utilization in $utilizations; do
    if [ "$utilization" -ge "$threshold" ]; then
      all_below_threshold=false
      break
    fi
  done

  if [ "$all_below_threshold" = true ]; then
    # 如果所有 GPU 的利用率都低于阈值,则增加空闲时间计数
    idle_time=$((idle_time + ${interval/m/} * 60))
  else
    # 如果有一个 GPU 的利用率不低于阈值,则重置空闲时间计数
    idle_time=0
  fi

  # 等待下一个检测周期
  sleep $interval
done

# 如果脚本执行到这里,说明所有 GPU 已经长时间未被使用
echo "All GPUs have been idle for $(($total_duration / 60)) minutes."

解释

  1. 获取所有 GPU 的利用率

    • 使用 nvidia-smi --query-gpu=utilization.gpu --format=csv,noheader,nounits 获取所有 GPU 的利用率。
  2. 检查所有 GPU 的利用率

    • 初始化 all_below_thresholdtrue
    • 循环遍历每一个 GPU 的利用率。如果有任何一个 GPU 的利用率不低于阈值,将 all_below_threshold 设置为 false 并跳出循环。
  3. 根据检查结果更新空闲时间计数

    • 如果所有 GPU 的利用率都低于阈值,增加空闲时间计数。
    • 如果有任何一个 GPU 的利用率不低于阈值,重置空闲时间计数。
  4. 等待时间

    • 使用 sleep $interval 命令在每次检测后暂停 10 分钟。

通过这种方式,脚本将每隔 10 分钟检查一次所有 GPU 的利用率,并在所有 GPU 都空闲超过 1 小时后输出提示信息。

  • 11
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值