这是一个智能的GPU监控和占用脚本,能够自动管理服务器GPU资源的使用情况。
- 智能监控:每10秒检测一次所有GPU的利用率
- 自动占用:当所有GPU利用率均为0%时,自动在最后一张GPU上启动占用程序
- 资源保护:占用程序仅使用约1%的GPU算力和466MB显存,对系统影响极小
- 智能切换:检测到其他程序使用GPU时,自动停止占用程序
- 时间限制:支持设置禁用时间段,避免在特定时段造成GPU使用率异常
- 使用统计:每日自动统计GPU使用率并生成报告
脚本默认在每天18:00-21:00时间段内禁用GPU占用程序,以避免造成GPU使用率100%的假象,然后被开盒。。。
- 确保系统已安装NVIDIA驱动和CUDA
- 在
gpu_monitor.sh中配置你的Conda环境:
CONDA_ENV_NAME="torch" # 请替换为你的Conda环境名称如需修改禁用时间段,可在gpu_monitor.sh中修改以下变量:
RESTRICTED_START_HOUR=18 # 禁用开始时间(24小时制)
RESTRICTED_END_HOUR=21 # 禁用结束时间(24小时制)cd gpu_monitor
./gpu_monitor.sh脚本将在后台运行,输出日志保存至log/monitor_output.log:
cd gpu_monitor
./gpu_monitor_nohup.shcd gpu_monitor
./stop_system.sh这个脚本会自动:
- 查找并停止GPU监控脚本进程
- 查找并停止GPU占用程序进程
- 清理PID文件
- 提供彩色输出和详细状态信息
如果脚本在前台运行,直接按 Ctrl+C 即可停止。
如果脚本在后台运行,使用以下命令停止:
# 查找监控脚本进程
ps aux | grep gpu_monitor.sh
# 停止监控脚本(替换 <PID> 为实际进程ID)
kill <PID>
# 或者使用更强制的方式
kill -9 <PID>如果只想停止GPU占用程序而不停止监控脚本:
# 查看占用程序进程ID
cat log/gpu_burner.pid
# 停止占用程序(替换 <PID> 为实际进程ID)
kill <PID>
# 或者直接删除PID文件,脚本会自动停止占用程序
rm log/gpu_burner.pid# 停止所有gpu_monitor相关进程
pkill -f gpu_monitor.sh
# 停止所有gpu_burner相关进程
pkill -f gpu_burner.pycd gpu_monitor
python gpu_burner.pycd gpu_monitor
python gpu_burner.py <device_id>cd gpu_monitor
python gpu_burner.py <device_id> <pid_file_path>log/gpu_usage_YYYYMMDD.log:每日GPU使用情况详细日志log/gpu_daily_summary.log:每日GPU使用率统计报告log/gpu_burner.pid:GPU占用程序进程ID文件log/monitor_output.log:后台运行时的监控脚本输出日志
- 脚本无法启动:检查Conda环境名称是否正确
- GPU占用程序无法启动:确认PyTorch环境已正确安装
- 权限问题:确保脚本具有执行权限
chmod +x gpu_monitor.sh
# 查看监控脚本是否运行
ps aux | grep gpu_monitor.sh
# 查看GPU占用程序是否运行
ps aux | grep gpu_burner.py
# 查看最新日志
tail -f log/gpu_usage_$(date +%Y%m%d).log