即使CPU损耗为100%,CPU频率也始终保持最低


15

我不知道这个问题何时开始发生,可能是自从我安装Ubuntu(16.04,全新)以来。我发现Ubuntu异常缓慢,即使在空闲时环境也很不稳定,CPU使用率很高,最初我以为某些程序会降低它的速度。

一段时间后,我弄清楚是什么原因造成的,无论何种情况,CPU频率均设置为800 MHz,不间断。最高频率假定为3100 MHz,具有Turbo-boost,通常为2000 MHz。我已通过让Blender在CPU上渲染一些内容来故意将CPU使用率(2个核上的所有4个线程)设置为100%,但仍保持在800 MHz。

我尝试设置最高性能配置文件,但仍然很低。我已经测试了温度,似乎一直都在60°C左右,这被认为是87°C的高温和105°C的临界温度。我一直都在使用交流电源运行,自一段时间以来,电池似乎没有在充电。

这是cpufreq-info报告的内容:

 driver: intel_pstate
 CPUs which run at the same hardware frequency: 0
 CPUs which need to have their frequency coordinated by software: 0
 maximum transition latency: 0.97 ms.
 hardware limits: 800 MHz - 3.10 GHz
 available cpufreq governors: performance, powersave
 current policy: frequency should be within 2.00 GHz and 3.10 GHz.
                 The governor "performance" may decide which speed to use
                 within this range
 current CPU frequency is 800 MHz (asserted by call to hardware).

其他3个CPU单元相同。

这是lscpu报告的内容:

Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                4
On-line CPU(s) list:   0-3
Thread(s) per core:    2
Core(s) per socket:    2
Socket(s):             1
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 58
Model name:            Intel(R) Core(TM) i7-3537U CPU @ 2.00GHz
Stepping:              9
CPU MHz:               799.921
CPU max MHz:           3100,0000
CPU min MHz:           800,0000
BogoMIPS:              3990.99
Virtualization:        VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              4096K
NUMA node0 CPU(s):     0-3
Flags:                 fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm epb tpr_shadow vnmi flexpriority ept vpid fsgsbase smep erms xsaveopt dtherm ida arat pln pts

在节能模式下,其行为相同。如果我断开交流电源并使用电池供电,则CPU频率将飙升至2800 MHz,因此似乎仅在交流电源上才是问题(这与它应该做的相反)。

我尝试设置更改CPU配置文件,尝试禁用频率缩放(如何禁用CPU频率缩放并将系统设置为性能?),尝试在/ sys / devices / system / cpu / cpu中设置scaling_min_freq [0-3] / cpufreq设置为更高的值,但是它们都不起作用。频率保持最小。

CPU类型为Intel®Core™i7-3537U CPU @ 2.00GHz,计算机为Dell Inspiron 15z Touch。

我也有一个问题,即使计算机是由交流适配器供电的,电池也无法充电。

更多诊断:

$ sudo rdmsr --bitfield 15:8 -d -a 0x198
8
8
8
8
$ sudo rdmsr --bitfield 15:8 -d -a 0x199
9
8
9
9

在0x199的情况下,数字8和9似乎是在连续调用之间随机排列的。


最近有一些类似的报告,并且经常针对58型CPU。hmmm ...您的计算机什么牌子?看看这个,哪里来的intel_pstate CPU频率驱动外在的东西是抱着频率低。在强调你的CPU的100%负荷,你可以看看 sudo rdmsr --bitfield 15:8 -d -a 0x198,并sudo rdmsr --bitfield 15:8 -d -a 0x199和输出添加到您的问题。注意rdmsr由软件包提供msr-tools,需要首先通过加载msr模块sudo modprobe msr
Doug Smythies

请使用省电调速器进行测试。
Doug Smythies

我已将所需信息添加到初始帖子中。简而言之,我的计算机是Dell Inspiron 15z Touch,它似乎确实是Bug 118751的一个实例(因为使用电池供电时该问题消失了)。使用节电调速器没有任何改变。
Dugi '16

我已经注意到,就像在与Marcin Nowak进行有关该错误的讨论中一样,我的电池似乎根本没有充电,或者充电速度非常慢(即使计算机已关闭)。不过,交流电源似乎丝毫不弱。
Dugi '16

您要继续通过错误报告吗?intel_pstate CPU频率驱动程序外部的某项将CPU频率保持在最低p状态。如果使用acpi_cpufreq CPU频率驱动程序启动,您会得到cat /sys/devices/system/cpu/cpufreq/policy0/bios_limit什么?
Doug Smythies

Answers:


12

事实证明,此问题与intel_pstate驱动程序无关,因为另一个驱动程序acpi_cpufreq报告了更好的值,但从未设置它们。操作系统可能对此没有控制权。

当某些戴尔笔记本电脑以交流电供电但无法充电时,充电中断会发生此问题。解决硬件问题可以解决此问题。在这种情况下,电源连接器中一块几乎看不见的布阻止了电接触。


1
但是该怎么办,如果现在我不能更换硬件(充电器)?
Vedavrat

我要检查一下连接器,它可能有问题,可以手动修复。如果不是这样,您可能将不得不遇到CPU慢的(非致命)问题。这是与操作系统或驱动程序无关的硬件问题。
Dugi '17

我的Dell Inspiton 15R N5110 Intel i7-2860QM电池快要死了,直到停止充电为止,剩下800 MHz。我打开BIOS并禁用Charger BehaviorAdapter Warnings。拉扯面糊,然后再次返回。同样在Windows中,但置于“高性能配置文件”中。然后拿回我的CPU并获得2500 MHz。因此无需更换即可克服问题。
dzmitry.lahoda

1
为了澄清,您的电池没有充电?因此,如果我遇到与OP相同的问题,但是我的电池似乎可以正常充电(笔记本电脑的电池续航时间长达数小时),那么我有其他问题吗?
加勒特

1
@Garrett电池未充电。如果击球手充电,那不是这个问题。问题是BIOS进入意外状态,笔记本电脑由交流电供电,但电池未充电。
杜吉(Dugi)'18

3

这会将您的cpu频率从任何终端设置为最高速度:

sudo cpufreq-set -f `cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq`

编辑/etc/init.d/ondemand文件以将其永久添加。ondemand用于在登录期间修改您的频率。默认值为“按需”调控器。换句话说,您从800MHz开始,然后根据需要上升。


2
它有助于。谢谢!但是,然后我们只是将CPU频率从最小(800 Mhz)更改为最大(3200 MHz),然后如何根据负载设置如何根据需要在0.8至3.2 GHz之间设置(调整)CPU频率?谢谢。
Vedavrat

2

我遇到了同样的问题-在便携包过热关机的情况下,笔记本电脑仍在开机,CPU频率卡在ubuntu和Windows中。

我进入BIOS,并在“电源”中禁用了CPU电源管理,然后将其他所有功能置于最大油门位置(最高性能)。重新启动,回到全速,然后回到BIOS,再次启用cpu管理,并更正了我之前更改的其他设置。等等!

编辑:原来是电池问题。如果电池电量真的很低,则CPU不会加速(我想是为了节省电量)。在我的Thinkpad上,我必须给电池充电几分钟,直到充电LED停止快速闪烁,然后再打开机器。


尽管从未重新启用电源管理,但我在XPS 15上执行了相同的操作。自从它运行快速且恒定以来。(电池现在有点受影响,但这对我来说并不重要)
pandaadb

2

有时我的笔记本电脑会完全忽略cpufreq设置。我发现这有效:

拔下电源线,然后重新插入。固定的:)

我猜是因为这台机器很困惑:它认为电池电量不足,并且认为电池电量不足,因此降低了CPU的频率以节省电量。

我们只需要让它知道它实际上已插入并且运行良好。

(此处为Asus x453m笔记本电脑,Ubuntu 14.04) YouTube:您是否尝试过重新打开它?


哇,是的,这对我有用!
蒂姆(Tim)

0

我的ThinkPad T520遇到相同的问题。在尝试了Internet上找到的所有解决方案之后,我准备重新安装Ubuntu。但是后来我检查了Windows中的CPU频率,发现它也限制为800 MHz。

因此,它看起来像是硬件问题。CPU冷却存在问题并不明显,因为较低的RPM较低,并且笔记本电脑的外壳不热甚至不热。

由于仍然没有其他选择,因此我拆开了笔记本电脑并更改了CPU和GPU芯片中的散热接口。你知道吗?有帮助!

我的一个Django项目执行时间的单元测试是45分钟,现在是11分钟。

因此,如果您会遇到类似的问题,尤其是在笔记本电脑上-可能是由于干库存的热接口-3-5年后,它通常会停止工作。并且不要被干净的散热器,静音散热器和凉爽的笔记本电脑机身所迷惑。


0

解决方法

# Determinate CPU capabilities
MAX_CPU=$(cpupower frequency-info -l | tail -n1 | cut -d' ' -f2)

# Disable "BD PROCHOT" 
wrmsr -a 0x1FC 262238;

# Set and apply frequencies
cpupower frequency-set \
  -d $(expr $MAX_CPU / 2) \
  -u $MAX_CPU \
  -r \
  -g performance; 

0

有时,这不仅是设置缩放调节器。缩放策略有时设置为MIN_FREQ和MIN_FREQ之间。我必须编写一个脚本来一次性设置所有内容:

#!/bin/bash
echo "Setting all CPUs to " "$@"
CPUINFO_MIN_FREQ=$(cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq)
CPUINFO_MAX_FREQ=$(cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq)
MIN=$(echo "scale=1; $CPUINFO_MIN_FREQ / 1000000" | bc)"G"
MAX=$(echo "scale=1; $CPUINFO_MAX_FREQ / 1000000" | bc)"G"

echo "Minimum frequency: " $MIN ", Maximum frequency: " $MAX

GOVERNOR=@0
if [ $# -eq 0 ]
    then
        echo "No arguments supplied, using ONDEMAND governor"
        GOVERNOR="ondemand"
    else
        echo "Governor " $1 " supplied"
        GOVERNOR=$1
fi

for ((i=0;i<$(nproc);i++));
    do cpufreq-set -c $i -r -g $GOVERNOR  --min $MIN --max $MAX;
done
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.