启动/恢复后约 40 秒,CPU 频率降至最低

启动/恢复后约 40 秒,CPU 频率降至最低

我使用的是 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为寄存器 0x​​19a 赋予值 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 加载的情况下获得的。

相关内容