[hardware development] c740 电源管理问题记录
Tofloor
poster avatar
longlong
deepin
Developer
2024-07-24 10:19
Author

在一个偶然下,我获得了一个联想yoga c740笔记本电脑,当然我作为一个linuxer,理所当然安装了一个linux系统进行使用,然而在使用中,我发现了一些问题

奇怪的CPU频率

这个笔记本使用的CPU是intel的10510U,8C16T 基础频率1.8GHz 加速频率4.9GHz, 但是奇怪的是,我使用linux的时候其最大频率仅仅为1.8GHz。让人感到费解。

Pstate设置无效

因为我使用的是10th以上的intel CPU 内核版本是6.10内核,所以理所当然应该使用的是intel pstate驱动管理CPU电源,但是我去 /sys/device/system/cpu/cpufreq/policy0目录下观察,似乎一切正常,但是即是我将pstate策略调整到performance也无法让CPU频率上去。

no_turbo

此时我的怀疑问题就不在电源策略这了,而是怀疑了intel 睿频设置,也就是 /sys/devices/system/cpu/intel_pstate/no_turbo 这个文件:如果为0则开启睿频,如果为1则为关闭。

我将这个文件改为了0,发现频率立马上去了,看来问题好像解决了。

但是,真的这么简单的吗?

重启无效

我重启了电脑,但是却发现处理器频率在启动时被锁定在1.6GHz。实际上,这是正常现象,因为 /sys/目录下的设置不会被持久化。正常情况下,我们需要使用一个daemon进行开机后的配置,或者使用BIOS固化配置。但是这里却有点奇怪,我尝试了BIOS中关于电源的三个配置,发现turbo功能都被关闭了。同时,我也写了一个systemd服务,让开机之后自动将 no_turbo文件的内容设置为0。

[Unit]
Description=Enable Turbo Boost on Intel CPU
After=network.target

[Service]
Type=idle
User=root
ExecStart=/bin/sh -c "echo 0 > /sys/devices/system/cpu/intel_pstate/no_turbo"
ExecStop=/bin/sh -c "echo 1 > /sys/devices/system/cpu/intel_pstate/no_turbo"
RemainAfterExit=yes
CapabilityBoundingSet=CAP_SYS_ADMIN
AmbientCapabilities=CAP_SYS_ADMIN

[Install]
WantedBy=multi-user.target

但是问题是,我尝试启用这个服务重启之后,依然无法正常启用turbo, 那问题出现在哪里?

windows下用户的吐槽

对于这个问题,上网搜索了下。也有用户反馈其在windows下使用的时候也遇到类似问题:

开机到桌面大概1分30秒的时间内, CPU严格锁频在1.09Ghz, 直到过了1分30秒左右才恢复正常,

那么看来似乎是硬件问题,由于某些原因,在系统启动后的一段时间 cpu的turbo状态是无法被更改的,而之后才能被系统更改,这也造成我看到的奇怪现象:

systemd服务无法更改turbo,但是进入系统可以手动更改。

解决方案

设计一个延时服务就好了,让其在启动的时候等待55s后再执行更改,但是事实上我认为这种解决方案是丑陋的,如果不做更改,大多数linux系统默认你没有turbo状态,其在启动完成之后性能依旧受限

[Unit]
Description=Enable Turbo Boost on Intel CPU
After=network.target

[Service]
Type=idle
User=root
ExecStart=/bin/sh -c "sleep 55s && echo 0 > /sys/devices/system/cpu/intel_pstate/no_turbo"
ExecStop=/bin/sh -c "echo 1 > /sys/devices/system/cpu/intel_pstate/no_turbo"
RemainAfterExit=yes
CapabilityBoundingSet=CAP_SYS_ADMIN
AmbientCapabilities=CAP_SYS_ADMIN

[Install]
WantedBy=multi-user.target
Reply Favorite View the author
All Replies
f@deepin
deepin
2024-07-24 10:35
#1

1.6GHz

击中我了

Reply View the author
fax928
deepin
2024-07-24 11:26
#2

感谢写作分享,辛苦。

别的intel cpu会锁频吗?confused

还有问一下如何得知cpu锁频了。

Reply View the author
Oli
deepin
2024-07-24 17:09
#3

感谢写作分享,辛苦。

Reply View the author
燕子大王来也!
deepin
2024-07-24 18:10
#4

感谢分享~

Reply View the author
库罗靡靡
deepin
2024-07-29 10:57
#5

sysctl.conf 来控制不是更合适吗?

Reply View the author