コアを無効にすると、実行中のプロセスにどのような影響がありますか?

StackOverflow https://stackoverflow.com/questions/306705

  •  08-07-2019
  •  | 
  •  

質問

このアプリケーションをMacbook Proにインストールすると、CPUのコアを無効にできます。不思議に思いました:コアを無効にすると実行中のプロセスにどのような影響がありますか?

コアを無効にすると次のものに影響があるかどうかにも興味があります

  • バッテリー寿命
  • 熱発生
  • プロセッサが通常両方のコアの40%未満を使用する場合のパフォーマンスの向上?
役に立ちましたか?

解決

コアを無効にすると、実行中のプロセスにどのような影響がありますか

使用しているプログラムが驚くほどひどく書かれていない限り、そうではありません。 OSスケジューラーは、プロセッサーが使用できなくなったことを警告され、そのプロセッサーへのプロセスのスケジューリングを停止します。 「実行中」からプロセスを配置する「待機中」にマイクロ秒かかるため、スイッチは瞬時に表示されます。プロセスは、使用可能になり優先度が許可されると、他のコアで実行を継続します。

コアを無効にするとバッテリーの寿命にどのように影響しますか

測定可能な効果はありますが、重要な効果はありません-場合によっては増加します。言い換えれば、現代のプロセッサーはすでに積極的な省電力技術を採用しているため、エネルギー使用量がおそらく5%以上減少することはないはずです。プロセッサはアイドルループを実行しません。実行可能なプロセスがなくなると停止します。システム全体の負荷が低い場合、OSはプロセッサを停止するのではなく遅くします。これにより、同様の節約効果が得られます。

特定の非常に具体的な使用シナリオでは、OSがプロセッサーを使用する方法によりエネルギー使用量が増加します(タスク切り替えが増えると、パフォーマンスが低下し、プロセッサー使用率が高くなります)。

コアの無効化は発熱にどのように影響しますか

電力と同様に、それは測定可能ですが、注意深い測定なしでは目立ちません。繰り返しになりますが、プロセッサには既に例外的な電力制御があり、アクティブなプロセッサの数に関係なく、クロック、電圧、およびプロセッサのアイドルを調整して負荷に合わせます。

コアを無効にするとパフォーマンスにどのように影響しますか(プロセッサが両方のコアの40%未満を使用していると仮定)

プロセスは非常に「ピーク」です。キーを押すかマウスを動かすと、多数の待機プロセスが開始され、非常に短い時間で100%が必要になります。

プロセッサを強制的に並列ではなく1つずつ実行することにより、はい、全体の平均使用率は80%だけです-プロセスが変更されるたび(優先度、終了、割り込みなど)にプロセッサがOSタスクをロードし、OSタスクがスケジューラを実行して、次のタスクをロードします。

1つのプロセッサでタスクスイッチングの負荷を2倍にしているため、需要に対応するためにOSコード(スケジューラー、イベントマネージャーなど)をより頻繁に実行しています。

これは無駄であり、実際にパフォーマンスの低下が顕著になる場合があります。たとえば、OSが両方のプロセッサを通常の速度の40%で実行するオプションを備えている場合、この追加作業は必ずしも実行する必要はありません。

-アダム

他のヒント

興味深い質問。これはやや複雑になります。 「コアを無効にするアプリケーション」が何を意味するかについて、あなたはあまり具体的ではありませんでした。そしてそれが正確に何をするのか、しかしあなたの質問と別のコメントから、このアプリケーションはOSカーネルに優しい方法でコアを無効にしていると推測します。

したがって、通常、OS Xの実行中には、スケジューラでCPUリソースを奪い合うさまざまなスレッド/プロセス(以降、スレッドといいます)が存在します。 Core 2 Duoプロセッサの両方のコアが有効になっている場合、カーネルは2つのスレッドを同時に実行する機能を備えています。実行する必要があるすべての要素で両方のコアを回転させます。コアの1つを無効にすると、カーネルは作業を単一のコアにディスパッチするだけに戻ります。もちろん、これにより、完了する必要がある作業量は変わりません。...潜在的な実行パフォーマンスが半分になります。

コアの平均使用率が50%未満の場合、これは重要ではないと思いますか?まあ、それは多くの状況で重要であり、理由はものを実行する待ち時間です。実行可能なスレッドが常に1つしかない場合、2番目のコアは、まだ有効になっていても、常に役に立ちません。しかし、2つ以上のスレッドが実行可能になる状況では...両方のコアを利用することができ、それらの1つが無効になっている場合、2つ目のスレッドで行われる作業は前のスレッドまで開始することさえできませんしばらく実行してからスワップアウトされます。 2つのスレッドが同じ作業を行うと仮定すると、デュアルコアの場合と比較して、2番目のスレッドが完了するまでに明らかに2倍の時間がかかります。ここで話している作業量に応じて、これに気付かないかもしれませんが、少なくとも理論的にはレイテンシ(応答性)は明らかに半分に削減されるでしょう。明らかに、システムが実行する必要のあるスレッドまたは実行する作業の多いスレッドでロードされると、すべてが事実上半分の速度で実行されていることが徐々に明らかになります。

それはすべて非常に簡単でした。

では、これは放熱とバッテリー寿命に関連してどういう意味ですか?

ここで先に出ますか?...実際のところ、単位時間あたり半分の電力しか消費していないと思うかもしれませんが、実際には作業は完了するのに2倍の時間がかかります。

ここでの結論は、OSとCPUがすでに協調してクロックを抑制し、そうでないコアを効果的にシャットダウンするため、全体的なバッテリー寿命に影響を与えるとしても、最終的にコアを無効にすることはほとんどないということです必要です。つまり、コアを必要に応じて使用する準備ができている待機中のオーバーヘッドはほとんどありません。実際、CPUが必要な作業を完了するのに時間がかかっているため、マザーボード上の他のすべてのデバイスがより長くアクティブになっている必要があるため、システムは実際には1つのコアのみを使用してバッテリ寿命が短くなる可能性があります。

熱放散に関連して、効果は同様です。明らかに、WATTSの観点でのピーク熱放散は、1つのコアのみで劇的に削減されます。ただし、そのコアはより長く動作し、正味の総エネルギー出力(JOULESまたはWATT SECONDS)はほぼ同じになります...これもまた、1コアと2コアの場合のバッテリー寿命に大きな影響を与えない理由です。

「無効」にすると、コアは、OS Xに並列処理を行わないように指示していることです。

また、OSはプロセスを無効にした後、プロセスを移動するのに十分なほど巧妙だと思います:)

ただし、消費電力やバッテリー寿命が大幅に改善されるとは思わないが、推測ではある-CPUにはまだ電力が供給されており、その一部だけがアクセスされていない。

また、これは単なる理論的な質問であり、熱特性を一定に保つように注意を払わない限り、1つのコアだけを実行するとCPU焼損の可能性が高くなるのではないでしょうか?ただの考え。

実際に実行中のプロセスには影響しません。スケジューラーは実行中のプロセスをコアから消去し、別のプロセスを専用にしません。
そして今、スケジューラーは、残りのコアへのプロセスの公平な割り当てを見つけるための素晴らしい戦略を見つける必要があります。

  1. バッテリー:限界
  2. heat-diff:無視できる... 2x40%負荷の場合
  3. 存在しないか、わずかに悪い
    • さらに悪いのは、すべてのプロセスを唯一のコアに切り替える必要があるためです
    • 1つのプロセス(およびそのコンテキスト!)が1つのコアに常にとどまることができる前
    • これによりI / Oが追加されます...そして、唯一のコアがそれを待つ必要があります(TLBとページテーブルをフラッシュします)

消費電力については知りませんが、マージンを節約できると思います。これは、CPUがMBP内で使用する電力の割合に依存します。

生の処理能力への影響に関しては、実行しているアプリケーションの性質に依存します。ほとんどのアプリケーションは複数のコアを利用するように設計されていませんが、ほとんどのトップエンドアプリはそうです。そのため、Photoshopまたはビデオ編集ソフトウェアを使用している場合、パフォーマンスのボトルネックがCPU(ネットワークIOまたはディスクIOではない)である場合、パフォーマンスが大幅に低下することに気付くでしょう。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top