在一个偶然下,我获得了一个联想yoga c740笔记本电脑,当然我作为一个linuxer,理所当然安装了一个linux系统进行使用,然而在使用中,我发现了一些问题
这个笔记本使用的CPU是intel的10510U,8C16T 基础频率1.8GHz 加速频率4.9GHz, 但是奇怪的是,我使用linux的时候其最大频率仅仅为1.8GHz。让人感到费解。
因为我使用的是10th以上的intel CPU 内核版本是6.10内核,所以理所当然应该使用的是intel pstate驱动管理CPU电源,但是我去 /sys/device/system/cpu/cpufreq/policy0目录下观察,似乎一切正常,但是即是我将pstate策略调整到performance也无法让CPU频率上去。
/sys/device/system/cpu/cpufreq/policy0
此时我的怀疑问题就不在电源策略这了,而是怀疑了intel 睿频设置,也就是 /sys/devices/system/cpu/intel_pstate/no_turbo 这个文件:如果为0则开启睿频,如果为1则为关闭。
/sys/devices/system/cpu/intel_pstate/no_turbo
我将这个文件改为了0,发现频率立马上去了,看来问题好像解决了。
但是,真的这么简单的吗?
我重启了电脑,但是却发现处理器频率在启动时被锁定在1.6GHz。实际上,这是正常现象,因为 /sys/目录下的设置不会被持久化。正常情况下,我们需要使用一个daemon进行开机后的配置,或者使用BIOS固化配置。但是这里却有点奇怪,我尝试了BIOS中关于电源的三个配置,发现turbo功能都被关闭了。同时,我也写了一个systemd服务,让开机之后自动将 no_turbo文件的内容设置为0。
/sys/
no_turbo
[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下使用的时候也遇到类似问题:
开机到桌面大概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
1.6GHz
击中我了
感谢写作分享,辛苦。
别的intel cpu会锁频吗?
还有问一下如何得知cpu锁频了。
感谢分享~
sysctl.conf 来控制不是更合适吗?
Popular Events
在一个偶然下,我获得了一个联想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。但是问题是,我尝试启用这个服务重启之后,依然无法正常启用turbo, 那问题出现在哪里?
windows下用户的吐槽
对于这个问题,上网搜索了下。也有用户反馈其在windows下使用的时候也遇到类似问题:
那么看来似乎是硬件问题,由于某些原因,在系统启动后的一段时间 cpu的turbo状态是无法被更改的,而之后才能被系统更改,这也造成我看到的奇怪现象:
systemd服务无法更改turbo,但是进入系统可以手动更改。
解决方案
设计一个延时服务就好了,让其在启动的时候等待55s后再执行更改,但是事实上我认为这种解决方案是丑陋的,如果不做更改,大多数linux系统默认你没有turbo状态,其在启动完成之后性能依旧受限