5

私は、他のプロセスのために負荷の量が異なる多くのサーバーに展開されるソフトリアルタイムアプリケーションに取り組んでいます。少なくとも 1 つのセットアップで、十分な CPU リソースの不足によってパフォーマンスが妨げられていることがわかりました。

Windows では、スレッド/プロセスが Ready 状態になる可能性があり、CPU が使用できない場合はその状態のままになることを理解しています。

Process.Current.ReadyTime のような呼び出しがあることを期待していました。これにより、この発生を検査および監視し、アプリケーション ログ内で警告/エラーを発生させることができます。たとえば、既知の期間にわたってデルタを取得し、準備完了状態にあることを許容する時間のしきい値を設定できます。

ただし、それを取得する直接的または間接的な方法を見つけるのに苦労しています。これまたは同様のことを達成する方法を知っている人はいますか?

TL;DR - スレッド/プロセスが Ready 状態にある時間を調べる方法を探しています (つまり、やるべき仕事はあるが CPU が利用できない)。

ありがとう、

Gマン

4

2 に答える 2

2

のようなプロパティはないと思いますがProcess.Current.ReadyTime(ただし、Windowsパフォーマンスカウンターにニーズに合ったものがあるかもしれません)、スレッドの場合はThreadState列挙を使用できます。

Ready 空きプロセッサがないため、スレッドがプロセッサの使用を待機していることを示す状態。スレッドは、次に使用可能なプロセッサで実行できるように準備されています。

実行中スレッドが現在プロセッサを使用していることを示す状態。

アプリケーションのすべてのスレッドをループして状態をログに記録したり、準備完了状態で費やした時間をカウントしたりするだけのモニタースレッドを作成できます。

于 2012-06-17T08:53:46.073 に答える
0

フレームワークにはそのようなものはありませんが、 WMIを検索する価値があるかもしれません

WMI がPercentProcessorTimeを公開していることは知っています。これは、プロセッサがアイドル状態である時間の割合を示します。

これにより、マシンの CPU 負荷がわかり、間接的な手がかりが得られます。

于 2012-06-17T09:02:52.043 に答える