Ubuntu 23.10无外设桌面AI/ML工作站闲置自动挂起的配置方案咨询
Ubuntu 23.10无外设桌面AI/ML工作站闲置自动挂起的配置方案咨询
兄弟,我太懂你这个场景了——把无外设的AI/ML工作站当远程服务器用,想靠CPU/GPU的低负载判断闲置自动挂起,既省电费、减少风扇损耗还能少积灰,可惜默认GNOME的闲置检测全靠键盘鼠标输入,对你这种情况完全不适用对吧?给你整理个Ubuntu 23.10下的可行配置方案:
一、先确认基础挂起功能正常
首先先确保系统本身的挂起命令能正常工作,毕竟这是基础。你可以直接在终端跑:
systemctl suspend
执行后工作站会挂起,然后用Wake on Lan唤醒试试,确认这个流程没问题再往下走——从你给出的gsettings输出看,系统的挂起相关配置是正常的,这一步应该不会有问题。
二、编写自定义闲置检测脚本
核心思路是写个脚本定时监控CPU和GPU的负载,当两者都持续低于你设定的阈值时,就触发挂起。下面给你个参考脚本,你可以根据自己的硬件调整:
1. 创建脚本文件
新建一个叫check_idle_suspend.sh的脚本,内容如下:
#!/bin/bash # 可根据自己的工作站情况调整这些阈值 CPU_15MIN_THRESHOLD=0.5 # CPU 15分钟平均负载阈值 GPU_UTIL_THRESHOLD=5 # GPU利用率阈值(百分比) CHECK_GAP=60 # 每次检查的间隔时间(秒) NEED_CONTINUE=10 # 需要连续满足闲置条件的次数(比如10次就是10分钟) idle_count=0 while true; do # 获取CPU 15分钟平均负载(取uptime输出的最后一个值) cpu_load=$(uptime | awk -F 'load average:' '{print $2}' | awk '{print $3}' | sed 's/,//') # 获取NVIDIA GPU利用率(如果是AMD显卡,替换成rocm-smi对应的命令,比如rocm-smi --showuse | grep 'GPU use' | awk '{print $4}') gpu_util=$(nvidia-smi --query-gpu=utilization.gpu --format=csv,noheader,nounits) # 对比阈值,判断是否闲置 if (( $(echo "$cpu_load < $CPU_15MIN_THRESHOLD" | bc -l) )) && (( $gpu_util < $GPU_UTIL_THRESHOLD )); then idle_count=$((idle_count+1)) # 连续满足条件就触发挂起 if [ $idle_count -ge $NEED_CONTINUE ]; then echo "检测到系统持续闲置,执行挂起操作" systemctl suspend idle_count=0 # 挂起后重置计数 fi else idle_count=0 # 负载超标,重置计数 fi sleep $CHECK_GAP done
2. 给脚本加执行权限
跑这个命令让脚本能被执行:
chmod +x check_idle_suspend.sh
三、设置脚本开机自启动
用systemd服务来管理这个脚本,确保开机后自动运行:
1. 创建systemd服务文件
在~/.config/systemd/user/目录下新建一个idle-suspend.service文件,内容如下(注意把/home/your_username/换成你自己的用户名路径):
[Unit] Description=闲置检测自动挂起服务(针对无外设工作站) [Service] ExecStart=/home/your_username/check_idle_suspend.sh Restart=always RestartSec=10 [Install] WantedBy=default.target
2. 启用并启动服务
依次执行下面的命令:
systemctl --user daemon-reload systemctl --user enable --now idle-suspend.service
这样脚本就会在你登录后自动后台运行了。
四、一些注意事项
- 显卡适配:脚本里的GPU监控命令是针对NVIDIA显卡的,如果你的工作站用的是AMD显卡,记得替换成
rocm-smi对应的利用率查询命令,比如rocm-smi --showuse | grep 'GPU use' | awk '{print $4}'。 - 阈值调整:你可以根据自己的工作站日常负载调整脚本里的阈值,比如如果你的工作站平时闲置时CPU负载更低,可以把
CPU_15MIN_THRESHOLD设得更小,避免误触发挂起。 - WOL确认:一定要确保Wake on Lan已经在BIOS和系统层面都正确配置了——BIOS里要开启WOL选项,系统里可以用
ethtool 你的网卡名查看Wake-on是否为g,如果不是,用ethtool -s 你的网卡名 wol g设置,然后把这个命令加到开机脚本里确保每次开机都生效。 - 默认电源设置:从你给出的gsettings输出看,那些关于 lid 关闭的挂起动作对你的无外设工作站完全不影响,不用去修改它们。
备注:内容来源于stack exchange,提问作者Dojo
相关产品推荐
相关产品推荐

