Frage

Ich habe ein Bildverarbeitungs Skript in PHP geschrieben, die als cron geplanten Task ausgeführt wird (in OSX). Um zu vermeiden, eine Überlastung des Systems, das Skript überprüft die Systemlast (mit ‚Uptime‘) und läuft nur, wenn die Last unter einem vordefinierten Schwellenwert liegt.

Ich habe portiert nun diese über Windows (2003 Server) und bin auf der Suche für eine ähnliche Funktion Kommandozeilensystemlast als Integer oder Float zu melden.

War es hilfreich?

Lösung

Sie können versuchen, diese auf einer Windows-Kommandozeile. Dies funktioniert in XP auch viele andere Informationen erhalten.

wmic CPU

Andere Tipps

Verwenden Last nicht ...

Die Systemlast ist kein guter Indikator in diesem Fall. Auf Unix sagt es im Wesentlichen Sie, wie viele Prozesse sind bereit und wartet zur Zeit ausgeführt werden. Aber da gibt es zahlreiche Gründe, warum ein Prozess haben könnte, warten Sie, Ihr Skript kann tatsächlich in der Lage sein, ohne laufen einem anderen Prozess jede Leistung kostet, auch wenn die „Last“ auf dem System hoch ist.

... verwenden schön

Sie sollten nice(1) auf Unix und das Äquivalent unter Windows ( "Process Priority"?) Verwenden, so kann das Betriebssystem entscheiden, wenn Ihr Skript ausgeführt werden soll!

Wenn Sie die Priorität des Skripts auf die absolute niedrigste mögliche Priorität gesetzt, dann wird es nur durch den Scheduler ausgeführt werden, wenn es nichts anderes im Moment zu tun.

Wahrscheinlich werden Sie haben eine Art von Mechanismus zu implementieren mehr als eine Instanz des Skripts zu verhindern, das gleichzeitig ausgeführt werden, falls es länger als das Intervall auszuführen dauert zwischen zu Anrufungen dauern.

Sie können ein Befehlszeilenprogramm verwenden genannt pv die Prozessnamen angezeigt werden und CPU% Nutzung über einen bestimmten Zeitraum (Standard: 500 ms) mit dieser Befehlszeile:

pve.exe -o"%n\t%c"

Es gibt helfen, den -? Schalter, der die verfügbaren Parameter beschrieben.

Es wird ein wenig mehr Arbeit als uptime auf OSX / Linux benötigen, da Sie die Zahlen aus der ersten Spalte insgesamt müßten (oder die Prozessnamen weglassen und insgesamt einfach der Wert jede Zeile der Ausgabe bilden), um die Gesamt zu erhalten (in%) CPU-Auslastung.

Die oben Seite ist, dass mit einem wenig mehr Arbeit, könnten Sie die bestimmte Menge an CPU erhalten, die Ihre Ausführung Prozess verwendet, anstatt Gesamtsystem CPU-Verbrauch.

WMI-Benchmarks so ziemlich alles in Windows, einschließlich Systemlast.

Ich fand einen Thread über sie .

Verwenden Sie einfach Standard-Win32-APIs (AGB)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top