オーディオをデコードしてピークを探すLinux(Ubuntu 12.14)のC ++で書かれたアプリケーションがあります。この計算はバックグラウンドスレッドで実行されます。デフォルトのUIスレッドからバックグラウンドスレッドを複数回呼び出します。このバックグラウンドスレッドが実行されている間、CPU使用率は約100%です。つまり、最初のコアのみが100%で使用され、残りの3つのコアはアイドル状態です(クアッドコアプロセッサ)。
それでは、アプリケーションがCPUを100%活用するのが良い習慣でしょうか?私は次のいくつかの投稿を読んだ。「通常、プロセスがCPUを100%使用するのは良いことです。これは、プロセスがより早く完了することを意味します。」
私が読んだ別の声明は次のとおりです。「75%~100%のCPU使用量は、全体のロード状態であるか、主要アプリケーションが実行されている場合、それほど悪くありません。ただし、アイドル状態であるか、PC/ノートブックを使用していないときの数値であれば問題になります。」
答え1
これは、アプリケーションが計算アプリケーション(このような)かインタラクティブアプリケーションかによって異なります。
コンピューティングアプリケーションの場合、CPUを最大限に活用することが目標です。これは、結果をより早く準備できるという意味だからです。利用率を低下させる要因はすべて改善の機会です(例:I / O待機)。
対話型アプリケーションの場合、CPU を使用する時間は、ユーザー入力に対する応答の準備に要する時間ではありません。使用量が少なくなりたいです。
マルチメディアエディタなどの一部のアプリケーションは、計算機能とインタラクティブ機能の両方を備えています。高いスループットを達成しながら、対話に対応できるようにタスクを複数のスレッドに分割することをお勧めします。これがあなたがやっているようです。
考慮すべきことの1つは、ワークロードでより多くのスレッドを使用して(分割可能であると仮定して)、より多くのコアをコンピューティングに使用することです。それらのいくつかがアイドル状態であれば、リソースの無駄です!
答え2
もちろん。 CPUのみ存在理由アプリケーションで使用します。完全なハードウェアとオペレーティングシステムの組み合わせは、この単一目的のために存在します。システムにあるだけのCPUを消費するのはなぜ良いではありませんか?
答え3
オペレーティングシステムの目的は、Windows、Mac OS、Linuxなど、この問題を処理することです。オペレーティングシステムの2つの主な目的は、予約およびハードウェアインタフェースです。この質問はLinuxやUnixとは関係ありません。