Home
Categories
WIKI
Topic
User
LANGUAGE:
中文
English
deepin linux内核控制CPU散热
Experiences and Insight
3015
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
deepin donwloader don't catch download launch from browsers
deepin 23 internal testing update on December 20, 2024
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+电池充电一起发热导致过热.