我使用的是 Acer 笔记本电脑,配备 Intel i7-4710HQ,标称主频为 2.50 GHz/使用睿频加速可达到 3.50 GHz。只要我turbostat
在启动或执行挂起/恢复后可以运行,它就会报告Bzy_MHz
接近标称值:
Core CPU Avg_MHz %Busy Bzy_MHz TSC_MHz
- - 392 11.42 3436 2503
0 0 151 4.49 3353 2504
0 1 67 1.99 3340 2504
1 2 96 2.84 3366 2504
1 3 175 5.22 3350 2504
2 4 105 3.14 3349 2504
2 5 81 2.43 3322 2504
3 6 46 1.38 3333 2504
3 7 2419 70.03 3453 2496
然而,大约 40 秒后,频率降至 800 MHz:
Core CPU Avg_MHz %Busy Bzy_MHz TSC_MHz
- - 8 1.01 798 2493
0 0 12 1.55 798 2493
0 1 1 0.16 800 2493
1 2 21 2.65 798 2493
1 3 9 1.11 798 2493
2 4 15 1.84 798 2493
2 5 1 0.08 797 2493
3 6 3 0.40 798 2493
3 7 2 0.29 798 2493
这里没有显示,但当我加载 CPU 时这种情况仍然存在。执行挂起和恢复或重新启动会使频率再恢复 40 秒左右。频率下降通常发生在启动/恢复后的 40-45 秒,但有时最晚在 50 秒后发生。
作为参考,这里是(部分)输出cpufreq-info
:(其他 CPU 的输出相同,共 7 个)
analyzing CPU 0:
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.50 GHz
available cpufreq governors: performance, powersave
current policy: frequency should be within 800 MHz and 3.50 GHz.
The governor "performance" may decide which speed to use
within this range.
current CPU frequency is 800 MHz.
以及lscpu
:
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 8
On-line CPU(s) list: 0-7
Thread(s) per core: 2
Core(s) per socket: 4
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 60
Stepping: 3
CPU MHz: 800.097
BogoMIPS: 4988.66
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 6144K
NUMA node0 CPU(s): 0-7
rdmsr
为寄存器 0x19a 赋予值 8。在 CPU 频率下降之前和之后都是如此。(wrmsr
在频率下降之前或之后将其设置为 0 不会影响行为。)
您看到的信息是我在运行 时生成的intel_pstate
。但是,在启动时禁用此功能(例如cpufreq-info
使用acpi_cpufreq
驱动程序进行报告)不会影响行为。设置processor.ignore_ppc=1
也不会影响行为。
我已经在使用性能调节器。更改scaling_min_freq
不会影响行为。无论我插入电源并充电还是仅使用电池,行为都是一样的。
我通常不会观察到超过 70 摄氏度的温度,并且在多次测试运行中,当频率下降时,每个核心的温度一直稳定在接近 65 度。
更新所需信息:
rdmsr --bitfield 15:8 -d -a 0x198
恢复后为所有 CPU 提供 33,当频率下降时降至 8。
rdmsr --bitfield 15:8 -d -a 0x199
恢复后为所有 CPU 提供 35,并且频率下降时不会改变。
grep . /sys/devices/system/cpu/intel_pstate/*
(掉落后):
/sys/devices/system/cpu/intel_pstate/max_perf_pct:100
/sys/devices/system/cpu/intel_pstate/min_perf_pct:100
/sys/devices/system/cpu/intel_pstate/no_turbo:0
grep . /sys/devices/system/cpu/cpu0/cpufreq/*
(掉落后):
/sys/devices/system/cpu/cpu0/cpufreq/affected_cpus:0
/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq:800000
/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq:3500000
/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq:800000
/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_transition_latency:4294967295
/sys/devices/system/cpu/cpu0/cpufreq/related_cpus:0
/sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors:performance powersave
/sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq:800000
/sys/devices/system/cpu/cpu0/cpufreq/scaling_driver:intel_pstate
/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor:performance
/sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq:3500000
/sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq:800000
/sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed:<unsupported>
所有这些都是在 CPU 加载的情况下获得的。