为什么修改CPU的“scaling_setspeed”会改变两个CPU的实时频率?

为什么修改CPU的“scaling_setspeed”会改变两个CPU的实时频率?

我的笔记本电脑 Thinkpad T400 运行 Ubuntu 16.04,有两个 cpu 核心cpu0cpu1.

$ cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq
797963
797963
$ cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_setspeed
800000
800000

然后我编辑/sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed将其内容更改为1600000,然后

  1. 为什么cpu1的实时频率也改变了,而没有改变它的scaling_setspeed文件?

    $ cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_setspeed
    1600000
    800000
    $ cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq
    1595928
    1595926
    
  2. 为什么以下命令显示的结果与上面不同:

    $ watch grep \"cpu MHz\" /proc/cpuinfo
    
    Every 2.0s: grep "cpu MHz" /proc/cpuinfo                                                                                                                   Thu Jan 25 17:31:01 2018
    
    cpu MHz         : 1600.000
    cpu MHz         : 800.000
    

谢谢。


看来更改应该只影响当前的核心,而不是两者都影响:

$ cat /sys/devices/system/cpu/cpu0/cpufreq/affected_cpus
0
$ cat /sys/devices/system/cpu/cpu1/cpufreq/affected_cpus
1

答案1

这可能是硬件限制。许多 CPU 要求所有核心(有时是同一芯片上的成对核心)以相同频率运行。该affected_cpus文件(位于同一目录中)应该告诉您哪些核心被迫以相同的频率运行。

https://www.kernel.org/doc/Documentation/cpu-freq/user-guide.txt一些文档。

相关内容