
私の計算集約型画像処理アプリケーションを実行すると (Windows 8.1 HP ラップトップで)、CPU は予想どおり 100% を超えて実行されますが、同時にサービスの CPU 使用率は 50% を超え (まったく予想外)、CPU を大量に使用しているサービスがリストされ、まったく意味をなさなくなります。
私の計算集約型画像処理アプリケーションは、まずカメラから数千フレームのビデオ データを取得し、次にそのデータに対して画像処理を行います。フレームの取得中、フレームが到着すると、いくつかの事前計算 (ヒストグラム、最小/最大など) が行われますが、処理の大部分は取得後に行われます。取得には約 10 秒かかり、計算には 13 ~ 20 秒かかります。私は、すべての計算をラップトップ上の 8 つの CPU すべてに分散するために、Visual Studio 2013 で OMP を使用しています。
リソース モニターに表示される内容は次のとおりです。
計算集約型の機能を置き換えると、Sleep
CPU は 0 近くまで低下し、サービス CPU も 0 近くまで低下しました。したがって、サービス CPU が高くなる原因は OMP、スレッド、セマフォなどではなく、それらは以前と同じように発生します。
私の質問は次のとおりです:
スレッドが何かを計算しているというだけで、サービス CPU が高くなるのはなぜですか?
「DigitalPersona Aut..」、「Win.. Defendeer..」、「Win.. Phone..」、「IP Helper」などのサービスが、なぜ負荷の高い計算タスクに関係するのでしょうか。
50% の CPU がニードル サービス タスクで浪費されていますか?
これについて何かアイデアや知識を持っている人はいますか。
答え1
次のようなツールを使って、これらのサービスが何をしているのか調べてみるのもいいでしょう。 プロセスエクスプローラーただし、これには Windows API に関するある程度の知識が必要です。
いくつかのサービスを無効にすることで、問題を軽減することもできます。
ログインに指紋スキャナーを使用していない場合は、DigitalPersona サービスを無効にできます。HP SimplePass がインストールされている場合は、アンインストールできます。
IpOverUsbSvc サービスは通常、Windows SDK によってインストールされます。コンピューターを電話に使用していない場合は、無効にすることができます。
ただし、コンピュータが非常にアクティブなときに Defender がよりアクティブになるのは、発生するすべてのことを追跡するため、理解できます。このプログラムが配置されているフォルダーに例外を作成すると、多少は落ち着くかもしれません。