私のラップトップThinkpad T400はUbuntu 16.04を実行し、2つのCPUコアcpu0
とcpu1
。
$ 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
次のように変更するように編集します。
ファイルを変更せずに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
次のコマンドが上記と異なる結果を表示するのはなぜですか?
$ 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いくつかの文書。