cronスケジュールタスク(OSX)として実行される画像処理スクリプトをphpで作成しました。システムの過負荷を避けるために、スクリプトはシステム負荷をチェックし (「uptime」を使用)、負荷が事前定義されたしきい値を下回った場合にのみ実行されます。
これを Windows (2003 Server) に移植し、システム負荷を整数または浮動小数点数で報告する同様のコマンド ライン関数を探しています。
この場合、システム負荷は適切な指標ではありません。Unixでは、基本的に、現時点で実行の準備ができて実行を待機しているプロセスの数がわかります。ただし、プロセスが待機しなければならない理由は多数あるため、システムの「負荷」が高くても、別のプロセスのパフォーマンスを犠牲にすることなく、スクリプトを実際に実行できる場合があります。
nice(1)
Unixとそれに相当するWindows(「プロセス優先度」?)で使用する必要があります。そうすれば、OSがスクリプトをいつ実行するかを決定できます。
スクリプトの優先度を可能な限り低い優先度に設定すると、現時点で他に何もすることがない場合にのみ、スケジューラーによって実行されます。
おそらく、呼び出しの間隔よりも実行に時間がかかる場合に備えて、スクリプトの複数のインスタンスが同時に実行されないようにするための何らかのメカニズムを実装する必要があります。
これは、Windows コマンド ラインで試すことができます。これはXPで機能し、他の多くの情報も取得します。
wmic CPU
標準の win32 API (GTC) を使用するだけ
次のコマンド ラインを使用して、 pvというコマンド ライン ユーティリティを使用して、特定の期間 (デフォルトは 500 ミリ秒) におけるプロセス名と CPU% 使用率を表示できます。
pve.exe -o"%n\t%c"
-?
利用可能なパラメータを説明するスイッチを使用するヘルプがあります。
合計 (% 単位) を取得するには、最初の列の数値を合計する (またはプロセス名を省略して、出力の各行から値を合計する) 必要があるため、OSX/Linux では稼働時間よりも少し多くの作業が必要になります。 ) CPU使用率。
利点は、もう少し作業を行うことで、システム全体の CPU 消費量ではなく、実行中のプロセスが使用している特定の CPU 量を取得できることです。
WMI は、システム負荷を含め、Windows のほぼすべてをベンチマークします。
それについてのスレッドを見つけました。