計算集約型アプリケーションを実行すると、サービスのCPU使用率が非常に高くなります。

計算集約型アプリケーションを実行すると、サービスのCPU使用率が非常に高くなります。

私の計算集約型画像処理アプリケーションを実行すると (Windows 8.1 HP ラップトップで)、CPU は予想どおり 100% を超えて実行されますが、同時にサービスの CPU 使用率は 50% を超え (まったく予想外)、CPU を大量に使用しているサービスがリストされ、まったく意味をなさなくなります。

私の計算集約型画像処理アプリケーションは、まずカメラから数千フレームのビデオ データを取得し、次にそのデータに対して画像処理を行います。フレームの取得中、フレームが到着すると、いくつかの事前計算 (ヒストグラム、最小/最大など) が行われますが、処理の大部分は取得後に行われます。取得には約 10 秒かかり、計算には 13 ~ 20 秒かかります。私は、すべての計算をラップトップ上の 8 つの CPU すべてに分散するために、Visual Studio 2013 で OMP を使用しています。

リソース モニターに表示される内容は次のとおりです。

リソースモニタービュー

計算集約型の機能を置き換えると、SleepCPU は 0 近くまで低下し、サービス CPU も 0 近くまで低下しました。したがって、サービス CPU が高くなる原因は OMP、スレッド、セマフォなどではなく、それらは以前と同じように発生します。

私の質問は次のとおりです:

  1. スレッドが何かを計算しているというだけで、サービス CPU が高くなるのはなぜですか?

  2. 「DigitalPersona Aut..」、「Win.. Defendeer..」、「Win.. Phone..」、「IP Helper」などのサービスが、なぜ負荷の高い計算タスクに関係するのでしょうか。

  3. 50% の CPU がニードル サービス タスクで浪費されていますか?

これについて何かアイデアや知識を持っている人はいますか。

答え1

次のようなツールを使って、これらのサービスが何をしているのか調べてみるのもいいでしょう。 プロセスエクスプローラーただし、これには Windows API に関するある程度の知識が必要です。

いくつかのサービスを無効にすることで、問題を軽減することもできます。

  • ログインに指紋スキャナーを使用していない場合は、DigitalPersona サービスを無効にできます。HP SimplePass がインストールされている場合は、アンインストールできます。

  • IpOverUsbSvc サービスは通常、Windows SDK によってインストールされます。コンピューターを電話に使用していない場合は、無効にすることができます。

ただし、コンピュータが非常にアクティブなときに Defender がよりアクティブになるのは、発生するすべてのことを追跡するため、理解できます。このプログラムが配置されているフォルダーに例外を作成すると、多少は落ち着くかもしれません。

関連情報