Home
Categories
WIKI
Topic
User
LANGUAGE:
中文
English
deepin linux内核控制CPU散热
Experiences and Insight
2958
views ·
4
replies ·
To
floor
Go
魔法师
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
Like 0
Favorite
View the author
All Replies
abc
deepin
2019-04-11 14:23
#1
建议lz直接写个bush文件吧,作为小白看完这个文章...不敢操作...
Reply
Like 0
View the author
anothersmile
deepin
2019-04-18 03:12
#2
谢谢楼主,成功,以后可以安静地用笔记本了。
Reply
Like 0
View the author
jianguo922
deepin
2019-04-18 03:57
#3
谢谢分享
Reply
Like 0
View the author
haha5722166
deepin
2019-05-23 19:38
#4
电池管理里面有个节能模式,打开就不发热了。
Reply
Like 0
View the author
Please
sign
in first
New Thread
Popular Ranking
Change
Flashing Screen Bug
Too many bugs in Deepin 23
n character problem in turkish language
No audio, no sound, no camera Dell XPS 14 9440
Bluetooth disconnecting.
Elevate Your Skills with Salesforce Dumps: Study Guide on DumpsBoss
Popular Events
More
向内核发送指令可以使机器进行人为干预控制硬件工作. 也可以查看硬件的工作状态.如果不是进行硬件驱动开发的可能不需要了解硬件的工作状态.
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/
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"频率修改与修改该文件(可能是该文件)实现的功能一样.
###########################################################
另附一图
此处是手写控制开启关闭核心数量: 但与控制CPU频率有冲突,以报错为主,但不影响控制频率脚本完整运行.
NOTE:无需注意处,以指令来控制CPU的配置是一种原始内核操作方法,不懂linux硬件操控的只需要了解CPU温度控制与工作频率有关就行了.建议1300左右以稳定控制温度,也就是基准状态以内.
需要注意的是: 该控制频率脚本在插电后与拔电后可能会需要重新运行一次. 频率太小会卡但不会卡死. 建议在充电时食用脚本控制调整CPU状态以免CPU+电池充电一起发热导致过热.