|
本帖最后由 岁月的牵绊 于 2022-2-24 07:00 编辑
【此帖已更新】玩客云在运行docker过程中时不时出现假死现象。每次都要去插拔电源,很繁琐!
通过调整CPU的的命令 cpufreq-set ,写个脚本每6秒钟看下温度,高于46就降频,低于42就升频【具体的值可根据自己的需求调整】
完美解决死机问题!稳定运行。但是会影响下载速度,时快时慢!介意者勿用!
贴上我现在使用的docker版armbian系统,玩客云1.0的主板。
附带编译者的下载地址:
链接:https://pan.baidu.com/s/132mbd05DE9wqYoRiw4dA4Q
提取码:5wxi
我仅把docker_armbian镜像文件搬到了阿里云盘,需要的回复自取。
阿里云盘链接:
https://www.aliyundrive.com/s/t4SdthKB5KU请下载完后把文件后缀名【.exe】删除,正确的文件后缀名应该为【.img】
提醒:
该方法仅适用已经安装好了cpufrequtils软件包的Linux系统使用,如armbian系统,目前openwrt系统不适用!
一、准备工作
1、查看系统是否已安装cpufrequtils
如果出现错误提示:cpufreq-set:command not found
请自行查找安装cpufrequtils的方法,本帖不提供安装教程!!!
2、查看cpu信息,确认cpu的可用频率范围。
3、查看CPU支持的调频机制,确定是否支持ondemand。上面的命令也可以查看。
- cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
复制代码 备注:
1.powersave 是无论如何都只会保持最低频率的所谓“省电”模式;
2.userspace 是自定义频率时的模式,这个是当你设定特定频率时自动转变的;
3.ondemand 默认模式。一有cpu计算量的任务,就会立即达到最大频率运行,等执行完毕就立即回到最低频率;
4.conservative 保守模式,会自动在频率上下限调整,和ondemand的区别在于它会按需分配频率,而不是一味追求最高频率;
5.performance 只注重效率,无论如何一直保持以最大频率运行。
6.schedutil 基于调度程序调整 CPU 频率。
4、查看当前CPU调频机制是否为ondemand
- cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
复制代码 #如果不是请设置cpu调频机制为ondemand
二、编写cpu-control.sh动态调整主频脚本【也可以本地编辑好再用ftp上传到sbin文件夹】
- vi /usr/sbin/cpu-control.sh
复制代码 复制下面带灰底的代码:
#可根据脚本自行调整温度和频率值
------------------------------------------
#!/bin/sh
#脚本功能:每过6秒检测一次,当cpu温度低于42℃时,调整cpu频率为400MHz-1540MHz之间;高于46℃时,调整cpu频率为400MHz-800MHz之间。
#引入i、j变量,防止重复执行调频命令。
i=1 #低温提高主频
j=0 #高温降低主频
while true
do
set -- $(cat /sys/class/thermal/thermal_zone0/temp \
/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor)
TEMP=$1
GOVERNOR=$2
if [ "$TEMP" -le 42000 ] && [ "$GOVERNOR" = "ondemand" ] && [ $i -eq 1 ]; then
cpufreq-set -d 400MHz -u 1540MHz
echo "已升频"
i=0
j=0
fi
if [ "$TEMP" -ge 46000 ] && [ "$GOVERNOR" = "ondemand" ] && [ $j -eq 0 ]; then
cpufreq-set -d 400MHz -u 800MHz
echo "已降频"
i=1
j=1
fi
echo "当前cpu温度:" $(($TEMP / 1000))"℃"
echo $i $j "【提示:1 1处于降频状态;0 0处于升频状态;1 0处于初始状态】"
sleep 6
done
----------------------------
vi使用提示
进入编辑:按字母i
退出保存:按Esc键,再输入:wq
不保存退出:按Esc键,输入:q!
上面的冒号不能少!!!
三、测试脚本是否运行正常
进入sbin文件夹
给cpu-control.sh文件添加可执行权限
- sudo chmod -R 755 cpu-control.sh
复制代码 运行cpu-control.sh,按住ctrl+c退出运行
另再开两个ssh窗口连接设备,对cpu进行压力测试以及监控cpu使用率
- cat /dev/urandom | md5sum
复制代码 在另一个窗口中执行命令,动态查看cpu温度和主频
如下图测试效果:
ctrl+c退出运行,结束测试。
四、设置cpu-control.sh为开机自启动
- vi /lib/systemd/system/cpu-control.service
复制代码 复制下面的代码:
[Unit]
#服务描述
Description=CPU Governor Control by Temperature
[Service]
#执行命令
Type=simple
ExecStart=/bin/sh /usr/sbin/cpu-control.sh
[Install]
WantedBy=multi-user.target
重载服务
使用systemctl命令来控制cpu-control.service
#启动
- sudo systemctl start cpu-control.service
复制代码 #关闭
- sudo systemctl stop cpu-control.service
复制代码 #重启
- sudo systemctl restart cpu-control.service
复制代码 #查看状态
- sudo systemctl status cpu-control.service
复制代码
#如上图:说明服务正常。
#设置开机自动启动
- sudo systemctl enable cpu-control.service
复制代码 关闭开机自动启动
- sudo systemctl disable cpu-control.service
复制代码 查看服务是否开机启动
- sudo systemctl is-enabled cpu-control.service
复制代码 查看cpu-control进程
- ps aux|grep cpu-control| grep -v grep
复制代码 结束cpu-control进程
- kill -9 12345(显示的进程号pid,第一个就是)
复制代码 欢迎大家试水!!!体验一次不死机的玩客云。
参考地址:https://blog.csdn.net/wangrui1573/article/details/118577968
侵权删!
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|