deepin linux内核控制CPU散热
Tofloor
poster avatar
魔法师
deepin
2019-04-11 09:33
Author
使用deepin时,机器发热的通常情况是CPU产生的热量大于消散的热量. 所以整体看起来是deepin的锅.但机器可能需要进行内核控制才能达到预期的效果,因为linux确实是可以让硬件发挥超高的性能.
向内核发送指令可以使机器进行人为干预控制硬件工作.      也可以查看硬件的工作状态.如果不是进行硬件驱动开发的可能不需要了解硬件的工作状态.

CPU的工作模式可能有两种以上:
  • 自动调度

  • 自动调度的情况可能处于两种模式,一是接电源自动变成高速,未接电自动变成低速,这是CPU本身的情况.不能完美达到智能状态.
  • 另一种是内核调度,linux内核支持该CPU调度.可以实现CPU本身的功能.但也不是很智能.

  • 无自动调度.
  • 发热自动降频,但可能温度要很高才行.没其它.



控制CPU发热从硬件上来说: 一是控制CPU频率,二是控制CPU工作核心数量.
查看CPU信息: lscpu 命令

  • 主要查看CPU厂商,型号,核心数量,核心参数    :   以下为 4核8线程的为例
  • Architecture :    x86_64                           处理器架构
  • CPU op-mode(s):   32-bit, 64-bit       处理器架构模式 32位,64位等
  • CPU(s):   8                                                           线程数,虚拟核心数
  • On-line CPU(s) list:     0-7                 在线(工作中)核心数量序列:           编号 0 到 7
  • Thread(s) per core:    2                    每个实际核心的线程数
  • Core(s) per socket:    4                   实际核心数量
  • Socket(s):             1                   代表一个插槽
  • NUMA node(s):          1           代表一个CPU节点
  • Model name:            Intel(R) Core(TM) i5-8250U CPU @          1.60GHz                 型号等参数
  • CPU MHz:                     2600.075                          目前工作频率(随时变动)
  • CPU max MHz:           3400.0000              CPU能达到的最高频率
  • CPU min MHz:           400.0000                 CPU能达到最低的频率
  • Virtualization:        VT-x                             虚拟化工作模式(一般用于判断是能支持虚拟化,加速虚拟机运行速度)
          L1d cache:             32K                这里都是CPU缓存参数
          L1i cache:             32K
          L2 cache:              256K
          L3 cache:              6144K



当查看到CPU的工作信息以核心参数,我们就可以根据这个来进行定制脚本:    每次需要控制的时候进行手动输入参数进行控制.

查看到该目录下有cpu0 -- cpu7 目录 cpufreq   目录  online  offline        等硬件信息文件和其它目录及文件(不主要).
查看该目录ls  /sys/devices/system/cpu/cpu0/cpufreq/

  • affected_cpus  中文意思:受影响(未知:  此处不做说明)
  • base_freqency      该文件记录CPU基准频率参数,图1 Model name: 最后一个 @          1.60GHz    参数.

    • 文件内容为 1600000, 表示 1600000KHz, 再换算成 1600MHz, 最后算成 1.6GHz
                
  • cpuinfo_min_freq    该文件记录CPU可以最低频率参数,
  • 文件内容为 400000 表示 400MHz , 最后表示为 0.4GHz

  • cpuinfo_max_freq  该文件记录CPU可以最高频率
  • 参数文件内容为 3400000 表示 3400MHz , 最后表示为 3.4GHz
            
  • scaling_min_freq         记录目前CPU运行的最高工作频率(目标当前状态)
  • scaling_max_freq        记录目前CPU运行的最低工作频率(目标当前状态)
  • scaling_cur_freq         记录目前CPU运行的工作频率(目标当前状态)



cpufreq-set工具使用:
      
      deepin 请安装  sudo apt install  cpufrequtils        命令行程序.该程序用于查看cpu运行信息,设置cpu运行时的频率等.
      cpufrequtils 包含3个命令行命令:
  • cpufreq-aperf        用于查看一段时间内的CPU信息
  • cpufreq-info          用于查看CPU正在运行时的信息(类似于lscpu, 或 cat    /proc/cpuinfo  但结果显示结构不一样)
  • cpufreq-set          见名知意就是 set (设置)
    • 原文:    cpufreq-set - A small tool which allows to modify  cpufreq settings.
    • 翻译:    CPU频率设定 - 一个小工具,它允许修改CPU频率设置。
    • 原文:    cpufreq-set允许您修改cpufreq设置而无需键入,   CPU频率设定可以让你不必键入(译1)修改CPU频率设置
          
      译1:   意思是使用该工具后,不需要修改该文件        "/sys/devices/system/cpu/cpu0/cpufreq/scaling_set_speed"   
   
      频率修改与修改该文件(可能是该文件)实现的功能一样.



  • 参数  -d : --min 意为最小值
  • 参数  -u : --max 意为最大值
  • 参数  -c : --cpu  意为cpu编号
    • sudo  cpufreq-set    -d 400MHz  -u 1500MHz    -c 0            为修改编号为0的虚拟核心频率
          

         
  • 以下是我自己定制的脚本,每次执行 "sudo  ./cpu.sh  1500"           即可修改最小400及上限1500MHz




            
  • 因为每次只能修改一个虚拟核心,所以使用for循环  `seq 0  7` 意思是 0到7的编号(cpu0--cpu7 此处请按自身情况来修改最大数量)
  • for语法:     i为数组循环取一值的变量, 有两个分号";" , do 与 done 包含一个语句表示循环内容
  • for   i   in  数组 ;
  • do
  •        do some thin ;
  • done

  •         附 seq 语法运行情况



###########################################################
      另附一图
      此处是手写控制开启关闭核心数量: 但与控制CPU频率有冲突,以报错为主,但不影响控制频率脚本完整运行.



  • 第3行注释: 说明 0表示关闭,1表示开启
  • 将指令写入与cpu编号文件夹下的online文件来开启关闭CPU虚拟核心
      
      NOTE:无需注意处,以指令来控制CPU的配置是一种原始内核操作方法,不懂linux硬件操控的只需要了解CPU温度控制与工作频率有关就行了.建议1300左右以稳定控制温度,也就是基准状态以内.
      
      需要注意的是: 该控制频率脚本在插电后与拔电后可能会需要重新运行一次. 频率太小会卡但不会卡死.            建议在充电时食用脚本控制调整CPU状态以免CPU+电池充电一起发热导致过热.
      
      


Reply Favorite View the author
All Replies
abc
deepin
2019-04-11 14:23
#1
建议lz直接写个bush文件吧,作为小白看完这个文章...不敢操作...
Reply View the author
anothersmile
deepin
2019-04-18 03:12
#2
谢谢楼主,成功,以后可以安静地用笔记本了。
Reply View the author
jianguo922
deepin
2019-04-18 03:57
#3
谢谢分享
Reply View the author
haha5722166
deepin
2019-05-23 19:38
#4
电池管理里面有个节能模式,打开就不发热了。
Reply View the author