玩客云高温死机解决方案


高清视频的cpu温度

硬件

散热器

拣点便宜的就行,大小14*14*6mm就行

多多上买个便宜的就行

导热膏

涂抹看建议有条件还是上 7950 下面这个主要是便宜,玩客云用这玩意够了而已。

多多上买个便宜的就行

软件

本文学习自: https://www.right.com.cn/forum/forum.php?mod=viewthread&tid=6728637&page=1&authorid=713426

一、准备工作

如果你全程是按我的教程来的,这步可以跳过

1、查看系统是否已安装cpufrequtils

cpufreq-set -h

如果出现错误提示:cpufreq-set:command not found
2、查看cpu信息,确认cpu的可用频率范围。

cpufreq-info

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

cpufreq-set -g ondemand

二、编写cpu-control.sh动态调整主频脚本

nano /usr/sbin/cpu-control.sh

复制下面代码,按 Ctrl+O 然后 Ctrl+X

#!/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

三、测试脚本是否运行正常

进入sbin文件夹

cd /usr/sbin/

给cpu-control.sh文件添加可执行权限

sudo chmod -R 755 cpu-control.sh

运行 cpu-control.sh,按住ctrl+c退出运行

/usr/sbin/cpu-control.sh

在另一个窗口中执行命令,动态查看cpu温度和主频

armbianmonitor -m

如下图测试效果:

ctrl+c 退出运行,结束测试。

四、设置 cpu-control.sh 为开机自启动

nano /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 daemon-reload

使用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

如果本文帮助到了你,帮我点个广告可以咩(o′┏▽┓`o)


评论
  目录