Windows サービスでホストされている WCF サービスがいくつかあります。昨日、タスク マネージャーを確認したところ、Windows サービス プロセスの CPU 時間が 5 時間を超えていたのに、他のすべてのプロセスの大部分は 0 時間でした。
どういう意味ですか?
CPU 時間が 5 時間以上だったことを心配する必要がありますか?
Windows サービスでホストされている WCF サービスがいくつかあります。昨日、タスク マネージャーを確認したところ、Windows サービス プロセスの CPU 時間が 5 時間を超えていたのに、他のすべてのプロセスの大部分は 0 時間でした。
どういう意味ですか?
CPU 時間が 5 時間以上だったことを心配する必要がありますか?
CPU時間は、プロセスが開始されてからプロセスが使用した処理時間を示します(Windowsの場合:Technetの記事へのリンク)。
基本的には次のように計算されます。
CPU Time of Process = Process Uptime * CPU Utilization of Process
たとえば、プロセスが5時間実行されていて、CPU時間が5時間である場合、それはプロセスがCPUのリソースを100%使用していることを意味します。これは、リソース消費を低く抑えたいか、システムの全能力を利用したいかによって、良いことでも悪いことでもあります。
プロセスがCPUのリソースの50%を使用し、10時間実行されていた場合、CPU時間は5時間になります。
CPU時間は、プログラムがCPUで命令を実行するのに費やす時間と、IOまたは他のリソースを待機する時間を反映しています。5時間以上かかることを心配する必要がありますか?
私はそうは思わないでしょう、考慮すべきいくつかの事柄は次のとおりです:
このプロセスはどのくらい実行されていますか?
これがCPUを盗んでいる可能性のある、ボックス上のプロセスまたは他のプロセスのパフォーマンスに問題がありますか?
他にどのようなプロセスがありますか?これらのアクティブなプロセスは、CPUを使用すると予想されますか?80のプロセスを参照すると、約20のプロセスで1秒以上のCPU時間が使用されています。
編集
WCFサービスが他のサービスからCPUを盗んでいる可能性があります。それらを監視して、パフォーマンスが期待どおりであることを確認する必要があります。また、合計CPU使用率に基づいて感覚を得ることができます。たとえば、CPUの25%しか使用されていない場合は、他のサービスは影響を受けません。ただし、75%を超えて実行している場合は、影響を受ける可能性があります。
監視に関しては、パフォーマンスの傾向を確認できるように、時間をかけて監視するようにしてください。これにより、問題を切り分けることができます。たとえば、サービスは正常に実行されていますが、デプロイ後、ゆっくりとCPUの使用量が増え始めます(週に10%と想定)。CPU使用率の傾向を把握していない限り、ある日目を覚ましてサービスの実行が遅くなる可能性があります。これは、デプロイから数週間後になる可能性があります。
プロセスが使用している CPU 時間を気にしている場合は、perfmonを使用してプロセスの CPU 使用率を長期間にわたって追跡し、問題があるかどうかを判断する必要があります。
タスクマネージャーのCPU時間とは正確には何ですか?
答えは簡単です:
プロセスが開始されてから使用された合計プロセッサー時間 (秒単位)。