CPUの「scaling_setspeed」を修正すると、両方のCPUのリアルタイム周波数が変わるのはなぜですか?

CPUの「scaling_setspeed」を修正すると、両方のCPUのリアルタイム周波数が変わるのはなぜですか?

私のラップトップThinkpad T400はUbuntu 16.04を実行し、2つの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いくつかの文書。

関連情報