マルチスレッドCPU集中タスクは、温度制限の前にCPUを調整します
2012 MacBook Proクアッドコアで期待どおりに動作する非常にCPU集中型のスレッドタスクを作成しました。20スレッドで緩め、Intel Power Gadgetで測定すると、スロットルを最小限に抑えて温度が約100°Cになります。 同じプログラムとデータファイルをデュアルコアマシンを搭載した2016 13インチMacBook Proに持ち帰って起動すると、温度が100°Cに近づくまで3.3-3.4 GHzを維持することが期待されます。上のコマンドはタスクを350%(各デュアルスレッド2コア)で示していますが、CPU周波数は1.6〜1-8 GHzにカットされ、温度は60℃程度でファンは静かになっています。シングルスレッドのCPUタスクでは、マシンは予想通りに動作し、100°Cに達しファンが回転するまで3.3-3.4 GHzを維持します。 両方のマシンは最新で、同じバージョンのgccを実行しています。稼働中のマシンからバイナリを取得して2016 Macに配置した場合でも、同じ問題が発生します。 3つまたは4つのCPUシングルスレッドを実行してマシンがフルスピードで動作し、スレッドプログラムを開始すると、周波数も低下します。 両方のマシンに16 GBのRAMがあります。 編集 コードをいじくり回した後、タスクがあまりにも多くのスレッドを作成すると、コードが調整されるのではないかと思います。このプログラムでは、読み取った各レコードを取得して、そのスレッドを作成します。私は一度に20程度のスレッドだけを許可するので、21を超えるスレッドはありませんが、30分以上処理される14,400,000のレコードがあるため、それらの各レコードは個別のスレッドによって処理されます。 CPU時間を浪費する簡単なpthreadプログラムを作成し、10個を実行に設定しました。問題のラップトップはそれを実行し、問題なく95Cにウォームアップしました。 それらを破壊して再起動する代わりに、同じスレッドを再利用するようにコードを書き直すと思います。 更新5/13/17 数時間の作業の後、n個のスレッドのみを作成して再利用するようになりましたが、役には立ちませんでした。CPU温度以外に、このマシンのスロットルを下げる原因は何ですか?