Inteli7-1065G7が最大ターボブースト周波数に達しない

Aug 18 2020

Intel i7-1065G7CPUを搭載したラップトップを持っています。turbostatレポート

35 * 100.0 = 3500.0 MHz max turbo 8 active cores
35 * 100.0 = 3500.0 MHz max turbo 7 active cores
35 * 100.0 = 3500.0 MHz max turbo 6 active cores
35 * 100.0 = 3500.0 MHz max turbo 5 active cores
35 * 100.0 = 3500.0 MHz max turbo 4 active cores
35 * 100.0 = 3500.0 MHz max turbo 3 active cores
38 * 100.0 = 3800.0 MHz max turbo 2 active cores
39 * 100.0 = 3900.0 MHz max turbo 1 active cores

(これらは4つの物理/ 8仮想コアです)mpfrCPUで大きなシングルスレッド負荷(piを計算)をスローすると、2つのコア(おそらく1つの物理コア?)が正確に3500 MHzで実行され、他のコアはそれよりも低いことがわかります周波数。しかし、それらはより高いターボブースト周波数に到達することはありません。

一部のCPUコアを無効にすると(たとえば、を使用echo 0 > /sys/devices/system/cpu/cpu[2-7]*/online)、ラップトップ対応するより高いターボブースト周波数に到達し、パフォーマンスが向上します(以前は平均18.5秒かかっていたタスクに16.8秒かかります)。

すべてのコアが必要なわけではないのに、どうすれば新しいラップトップを最大クロック速度に到達させることができますか?

HP Envyx360ラップトップでカーネル5.4.0を搭載したUbuntu20.04を使用しています。

私が期待すること:i7-4712MQ turbostatを搭載した古いラップトップでは

30 * 100.0 = 3000.0 MHz max turbo 4 active cores
30 * 100.0 = 3000.0 MHz max turbo 3 active cores
32 * 100.0 = 3200.0 MHz max turbo 2 active cores
33 * 100.0 = 3300.0 MHz max turbo 1 active cores

(これも4/8コアマシンです)。このマシンでは、シングルコア負荷により1コアがほぼ3.3 GHzにブーストされ、2コア負荷では3.2GHzの2クロックなどになります。

Windowsで個々のCPU周波数を確認していませんが、タスクマネージャーに3.7GHzを超える周波数が表示されることがあります。

更新:問題は解消されました...理由はわかりません。アンインストールしましたlinux-cloud-toolsが、これが理由ではないと思います。

回答

H2ONaCl Aug 18 2020 at 08:01

あなたが書いた...

大きなシングルスレッドロードをスローすると

プログラムがシングルスレッドの場合、他のスレッドの最大頻度に移動する必要がないため、移動しません。

リンクはインテル®Core™i7-1065G7プロセッサー用です。

リンクしたIntelのドキュメントによると、最大は3900MHzです。あなたのデータは3900MHzにコアがあることを示しているようですので、なぜそれが最大に達しなかったと思うのか分かりません。あなたはこれを投稿しました...

35 * 100.0 = 3500.0 MHz max turbo 8 active cores
35 * 100.0 = 3500.0 MHz max turbo 7 active cores
35 * 100.0 = 3500.0 MHz max turbo 6 active cores
35 * 100.0 = 3500.0 MHz max turbo 5 active cores
35 * 100.0 = 3500.0 MHz max turbo 4 active cores
35 * 100.0 = 3500.0 MHz max turbo 3 active cores
38 * 100.0 = 3800.0 MHz max turbo 2 active cores
39 * 100.0 = 3900.0 MHz max turbo 1 active cores

一般に、読み取り値が最大周波数でない場合は、断続的にしか測定されないため、測定では断続的にしか表示されないか、IOなどの制約があるため最大周波数である必要はありません。心配しないでください。制約のないプログラム、つまり計算制約のあるスレッドを作成する場合は、最大頻度になることを保証します。

18.5秒の経過時間は、結論を引き出すために使用したくない変量効果のため、意味がない場合があります。200秒以上の長時間実行ジョブは、より意味のあるデータを提供する可能性があります。

thesps Sep 28 2020 at 19:04

私は同様のセットアップ(i7-9700K CPU、Ubuntu 18.04)で同様のことを経験しました。また、私のマシンの使用法も似ていると思います。これは、集中的な(ただしシングルスレッドの)アプリケーションを実行するために使用するデスクトップマシンであり、Webブラウザーといくつかのメッセージングアプリを開いている可能性もあります。元の投稿の下のコメントで、プロセスのCPUアフィニティを設定するという提案が機能することがわかりました。私tasksetはそれをしていました[1]。

最初のテスト(アフィニティ設定に変更なし):8コアすべてが約10%の使用率で「アイドリング」します。シングルスレッドのCPU集中型タスクを開始します。1つのコアが100%にジャンプし、を使用しているすべてのコアで3.6 GHz(ターボなしの最大)が表示されますi7z

2番目のテスト:実行中のすべてのプロセスをCPUコア0および1に制限します。現在、これら2つのコアは30〜40%であり、残りは0%です(ただし、OSがプロセスを開始すると、他のいくつかのコアがアクティビティを取得し始める場合があります)。次に、同じシングルスレッドのCPU集中型タスクを開始します。1つのコアが100%にジャンプしますが、今では4.9GHzの最大ターボ周波数に到達していることがわかります。その後、私の場合は範囲をに置き換えることで、すべてのコアを使用するようにアフィニティを設定しました。for i in `sudo ps -aux | awk '{ print $2 }'`; do sudo taskset -a -p -c 0-1 $i; done0-10-7

[1] http://manpages.ubuntu.com/manpages/focal/man1/taskset.1.html