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