二合一,发热笔电等解决方案
Tofloor
poster avatar
魔法师
deepin
2019-05-14 21:46
Author
本帖最后由 inface 于 2019-5-14 13:48 编辑
  1. #!/bin/bash

  2. # 0关1开
  3. # 节能性能的偏好:默认,性能模式,平衡性能模式,平衡功率模式,功率模式
  4. # energy_performance_preference: default performance balance_performance balance_power power
  5. # 缩放省长:性能,省电
  6. # scaling_governor: performance powersave

  7. for i in `seq 0 7`;
  8. do   
  9.     echo "balance_performance" >  /sys/devices/system/cpu/cpufreq/policy${i}/energy_performance_preference;
  10.     echo "powersave" >  /sys/devices/system/cpu/cpufreq/policy${i}/scaling_governor;
  11. done
Copy the Code

1. 分部内容来源链接:https://blog.csdn.net/melody157398/article/details/79481016
2. https://bbs.deepin.org/post/177332https://bbs.deepin.org/post/177332
3. https://bbs.deepin.org/post/176631https://bbs.deepin.org/post/176631

正文:
    本内容主要讲解 Linux 内核下 的CPU部分(其目标就是解决笔记本耗电,发热等问题,除了CPU耗电,还有什么耗电?):
    关于CPU的详细参数说明请上面链接看3点,关于CPU的工作模式请看1点2点部分。 当然321这样的顺序看比较好懂,别问为什么,看就是了,看不懂(怎么可能)。

    说明:CPU的一些参数是在 /sys/devices/system/cpu/下,有一些文件如 online offline possible 等,这些代表在线的核心数量,离线的不工作,和最高可能工作的数量。
                 该目录下还有一些 cpu+编号的目录,这就是每个核心的参数目录,里面有一些文件在这里不重要说明,但在第3点中说过其它级别的状态数据,如温度。
                 在该目录下有一个 cpufreq(cpu 频率)目录,   在这之下有一些policy+编号的目录,就是有一些核心的频率参数,像cpuinfo_max_freq,cpuinfo_min_freq等说明核心的最高及最低频率(硬件参数)。base_frequency 基准频率(有关基准在3点内容中提到过)。
                 像scaling_开头的文件如scaling_cur_freq,scaling_max_freq,scaling_min_freq等,这些文件是可以更改的,scaling_cur_freq这个文件是自动变化(当前核心频率),scaling_max_freq,scaling_min_freq是可以修改核心最高,最低界限值(当然在3点中提到过)。


最终目的:使用脚本的方式将循环修改每个核心(脚本放心修改)
         查看和修改policy目录下的关于CPU工作模式的文件(开头部分代码就是)。(cat <文件名/文件路径>,会用命令就用)
  • 查看:energy_performance_available_preferences  列出这个核心的偏好:意思就是列出可以工作的模式参数(可用英文翻译)
  • 修改:energy_performance_preference  修改这个核心的工作模式  (被修改的文件,可读出当前的参数)
  • 查看:scaling_available_governors    列出这个核心的调节模式
  • 修改:scaling_governor  修改这个核心的调节模式

NOTE:(每个核心配置都改一次,并且两个配置要搭配,你们可以自己参考。区别就是插电与不插电的情况,在被修改的文件中可以读出当前的工作模式)
  • 每次触发如插入电源,拔除电源等操作,会重置该文件内的参数。会影响你设置好的工作模式,修改的频率。(可能外设也会触发:如USB等)
  • 请放心修改,参数不对修改不成功(不会炸)。
  • 要么用脚本,要么使用 sudo su 进入root模式,终端的主题可能会变,但不影响操作。
  • 修改频率等操作也是一样。基本上风扇速度也可以修改,但我电脑没有风扇,也就等于没有相关参数文件。

在两个文件中:
  • 我的未插电模式是 balance_performance(平衡) 和 powersave(节能),插电就是 performance(性能) 和 performance(性能)。



linux在于用,用linux在于学,正的傻瓜式用linux你除非提供了非常多的GUI设置工具。不然一个睡眠休眠发热问题就让你怯步。
调节硬件工作的是内核,只不过其它发行版内置了一些工具而已,驱动deepin是不可能提供的,你见过微软提供了吗,不都是有由大驱动大师精灵支撑的,然后被微软集成为更新。


林纳斯手中诞生的linux:我目前在 just for fun by linus Torvalds 一书中了解了前半部分(没看完)。也就是他年轻时候的故事,为了解决minix系统问题写了很多工具,用过几种语言,最终还自己写了一个多用户登录的终端程序。



Reply Favorite View the author
All Replies
魔法师
deepin
2019-05-14 21:56
#1
如果这个能加入FAQ也应该不错,就是因为怕过时(某位大佬说得,以及 Linux 内核哪天不能这样做的情况)。
这样之后没人再会为发热80度烦了吧,唉。2点中的win7截图,平均31度这就是理想状态下的温度啊。
贴会沉,小白会增加,有人看到出个工具吧,脚本的也行,然后就是可以自动化控制的那种分享分享成果。
可以参考 yacpi 的源码(debian的源的,我的机器不支持,某个check检查函数没过)(C语言非常简单)。
Reply View the author
piggyking
deepin
2019-05-15 03:34
#2
用TLP,插电之后performance,频率基本保持在3000(max 4000),但是实际上我设置的范围是5-100。
电池设置的5-20,就卡死在800频率了。

windows的电源管理可以做到performance的状态,CPU空闲时也可以正常回归最低范围的频率。。。linux不知道为啥不行。
Reply View the author
魔法师
deepin
2019-05-15 05:13
#3
https://bbs.deepin.org/post/178005
用TLP,插电之后performance,频率基本保持在3000(max 4000),但是实际上我设置的范围是5-100。
电池设置 ...

TLP是一个高级电源管理工具,实际上操作的参数也是硬件参数,但它的确是自动化控制,功能也有很多。不知你那个 5-100,5-20是不是百分比呢?如果是在控制CPU核心频率的百分比范围,你在performance模式下是保持高频率状态(如果你设置了最高频率界限值,那么保持的就是你的最高频率界限值)。
当然,我最初开始是进行控制CPU发热的步骤是:开关核心控制>控制核心频率>控制CPU工作模式。控制CPU工作模式(策略)也就是这一贴内容。在我大量测试后认为 /sys/devices/system/cpu/cpufreq/policy+编号 与 /sys/devices/system/cpu/cpu+编号/cpufreq/ 是一样的目录与文件。
并且 scaling_available_governors 与 energy_performance_available_preferences 是提供可设置的参数值列表,最后将某个参数写入 scaling_governor 与 energy_performance_preference 这两个文件。
参数中最耗电也最发热的是 performance(高性能),power(未知...)。省电模式:balance_performance(平衡性能),balance_power(平衡能量?),  powersave(节能)。
其中这两个文件中不能含有任何performance参数,不然低功率的设置就不起作用。可以配置cpufreq工具,lscpu命令等进行查看与测试。
Reply View the author
S4mW0ng
deepin
2019-05-15 16:05
#4
我也想找一个这个的可操作性的可行方案,谢谢继续研究!我的是联想的Y410P
Reply View the author
S4mW0ng
deepin
2019-05-15 16:10
#5
https://bbs.deepin.org/post/178005
TLP是一个高级电源管理工具,实际上操作的参数也是硬件参数,但它的确是自动化控制,功能也有很多。不知 ...

你这个问题我曾经查过相关资料,发现intel的cpu是针对win优化过的,也就是win可以做到全频睿频,但是linux还是做不到!要么就是powersave最高在最低频率和最高频率自动切换(不包括最高睿频),或者performance,在最高频率到最高睿频自动切换!

目前deepin的电源策略就是performance,好像也没有提供修改成powersave的方法,手动修改后重启又恢复。我也是在找一个合适的处理方案。说TLP电源管理不错,但是我到目前还不懂这个TLP,有详细方案吗?谢谢!
Reply View the author
WENWEN
deepin
2019-05-15 16:29
#6
本帖最后由 sored520 于 2019-5-15 08:36 编辑

https://01.org/zh/powertop/downloads?langredirect=1    不过这个貌似属于分析
Reply View the author
piggyking
deepin
2019-05-15 18:28
#7
https://bbs.deepin.org/post/178005
你这个问题我曾经查过相关资料,发现intel的cpu是针对win优化过的,也就是win可以做到全频睿频,但是linu ...

tlp论坛里帖子很多。

linux没法切换频率范围这个很烦,等于是两种配置实际就是两种频率。

一插电风扇呼呼的转。
Reply View the author