笔记本的处理器频率,若使用电池,则可对最高频率做适当限制,以达到省电目的;若插入移动电源,则可以解除限制,让处理器能够在其最高频率上运行,以提高性能——这是最基本的电源管理策略。
然而,我的ThinkPad X200却不走寻常路,故意和我对着干。X200搭载Intel Core 2 Duo P8600 双核处理器,设计最高主频为2.40GHz。在使用“performance”调控器(governor),并尽可能将调控器最高频率设为最大值的情况下:
这也太奇怪了吧,笔记本居然会在插电时降频!尽管插电后电量多到用不完,毫无费电之虞,笔记本却仍然认为应该省电;而使用电池时,笔记本却根本不管这些,允许CPU达到最大频率。什么逻辑!
起初,我以为是BIOS中的节能控制设置不当。有一个设置是Intel SpeedStep Technology,这是英特尔的处理器电源管理功能。我尝试将其中针对AC适配器和电池的策略设置为相同的值,结果重启后问题如故;而关闭该功能后,Linux管理CPU频率的 acpi-cpufreq 驱动直接失效,不可行。后来,我又尝试将PCI和PCI-E的省电功能关闭,问题同样如故。
看来,不能靠更改BIOS设置来解决插电降频的问题,只能从系统层面入手了。会不会跟内核有关?对此,我尝试了不同的内核版本,以及使用OpenSUSE安装盘的Shell进行测试,运行以下命令设置调节器为 performance ,读取调控器最大频率(须在Root用户下测试):
结果,插电后仍然降频。由此可排除内核版本和 *** 作系统的问题。
那么,问题到底出在哪里呢?
在Linux中,控制处理器频率的目录是 /sys/devices/system/cpu/cpu*/cpufreq (星号为处理器核心编号),其中包含一系列节点,用于读取或设置处理器频率的参数。主要包括:
注意其中的 bios_limit ,它反映的是BIOS所提供的频率限制值。在本文开头的条件下,使用电池时,其中的值为2400000,而插上电源后该值立刻降到1600000。由此不难得知,是BIOS在限制CPU的频率,X200的BIOS对处理器频率的调控策略简直是弱智!
那么,有什么办法可以打破限制?的确是可以的,Linux系统可以忽略 bios_limit 中BIOS所提供的不合理限制值,让用户可以自由设置理想的频率,使处理器性能的发挥重回正轨。
具体的做法是,调节内核当中的一个参数—— ignore_ppc ,将其值设为1,表示忽略BIOS频率限制:
设置即时生效。这时再插入电源适配器,即可发现频率再也不会被限制在1.6GHz下了。
若要使该设置在每次重启后都能自动应用,可以更改启动配置文件 /etc/default/grub 。在root权限下打开它,找到 GRUB_CMDLINE_LINUX_DEFAULT ,将 processor.ignore_ppc=1 加在值的后面,就像这样:
最后运行
更新启动参数,重启即可生效。
到此,插电降频问题彻底解决,终于可以愉快地享用了!
为了解决Ubuntu更新GPU的ACPBIOSError问题,首先可以尝试在BIOS里面找到并启用内嵌显卡,然后重启系统,再尝试更新GPU驱动,如果仍有问题,可以尝试更换显卡或更换系统。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)