web-dev-qa-db-ja.com

CPU周波数制御

最新のHWEカーネル(3.16.0-31-generic)を搭載したkubuntu 14.04と、Xeon 1246v3プロセッサー(基本的にはeccサポートを備えたi7 4770)があります。プロセッサの基本周波数は3.5 ghz、最大ターボ周波数は3.9 ghzです。

次の質問があります。

1)デフォルトでインテルのp-stateが有効になっていますが、これは問題ありませんが、p-stateでは、パフォーマンスと省電力の2つのガバナーしか取得できないことを知っています。 最大許容CPU周波数を手動で設定するにはどうすればよいですか

2)上記のように、CPUは1つのコアがロードされている場合にのみ3.9で実行できるはずです。すべてのコアに全負荷がかかっているため、3.5 GHzを超えることはできません。しかし、コマンドwatch -n 0 "cat /proc/cpuinfo | grep -i mhz"を発行すると、4つのコアすべてが常に3.9 ghzであり、これは不可能であるはずです。どのようだ?

ありがとう!

3
MadHatter

/sys/devices/system/cpu/cpu**N**/cpufreq/scaling_min_freq/sys/devices/system/cpu/cpu**N**/cpufreq/scaling_max_freqを設定することにより、最大周波数と最小周波数を設定できます

詳細については、このドキュメントで説明しています: https://software.intel.com/sites/default/files/comment/1716807/how-to-change-frequency-on-linux-pub.txt

編集:cpufrequtilsパッケージのcpufreq-setを使用して同じことを実現できます。 https://www.kernel.org/pub/linux/utils/kernel/cpufreq/cpufreq-set.html

3
Jakub Lucký

質問1:最大許容CPU周波数を手動で設定するにはどうすればよいですか?

たとえば、最大周波数を3.5 GHz(ターボ無効)または3.9 GHz(ターボ有効)の60%に設定するには:

echo "60" | Sudo tee /sys/devices/system/cpu/intel_pstate/max_perf_pct

質問2:4つのコアすべてが常に3.9 ghzであることがわかりますが、これは不可能ではないはずです。どのようだ?

すべてが同時にアクティブになるわけではありません。 PLLは1つだけで、すべてのCPUは常に同じ周波数です。 3.9GHzが表示されている場合、サンプルが取得された時点で1つのCPUのみがC0状態でした。

1
Doug Smythies

カーネルに正しいモジュールがロードされている場合、上記のすべてが機能します。

# CPU frequency control Driver
modprobe acpi_cpufreq
modprobe mperf
# CPU Frequency scaling modules
modprobe cpufreq_conservative
modprobe cpufreq_ondemand
modprobe cpufreq_performance
modprobe cpufreq_powersave
modprobe cpufreq_stats
modprobe cpufreq_userspace
modprobe freq_table
1
user51078