Domanda

Ho scritto uno script di elaborazione delle immagini in php che viene eseguito come task cron programmato (in OSX). Per evitare di sovraccaricare il sistema, lo script controlla il caricamento del sistema (utilizzando "uptime") e viene eseguito solo quando il carico è al di sotto di una soglia predefinita.

Ora ho portato questo su Windows (Server 2003) e sto cercando una funzione di riga di comando simile per segnalare il carico del sistema come intero o float.

È stato utile?

Soluzione

Puoi provarlo da una riga di comando di Windows. Funziona in XP, ottieni anche molte altre informazioni.

CPU wmic

Altri suggerimenti

Non utilizzare il caricamento ...

Il carico del sistema non è un buon indicatore in questo caso. Su Unix in sostanza ti dice quanti processi sono pronti e in attesa di essere eseguiti al momento. Ma poiché ci sono numerose ragioni per cui un processo potrebbe dover aspettare, il tuo script potrebbe effettivamente essere in grado di funzionare senza costare ad un altro processo alcuna prestazione, anche se il "caricamento" sul sistema è alto.

... usa bello

Dovresti usare nice (1) su Unix e l'equivalente su Windows (" Process Priority " ;?), in modo che il sistema operativo possa decidere quando eseguire lo script!

Se imposti la priorità del tuo script sulla priorità assoluta più bassa possibile, verrà eseguita dallo scheduler solo quando al momento non c'è altro da fare.

Probabilmente dovrai implementare un qualche tipo di meccanismo per impedire l'esecuzione simultanea di più di un'istanza del tuo script, nel caso in cui occorra più tempo rispetto all'intervallo che intercorre tra le invocazioni.

È possibile utilizzare un'utilità della riga di comando denominata pv per visualizzare il nome del processo e% di utilizzo della CPU in un periodo di tempo specifico (il valore predefinito è 500 ms) utilizzando questa riga di comando:

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

È possibile utilizzare l'opzione -? che descrive i parametri disponibili.

Richiederà un po 'più di tempo di operatività su OSX / Linux, poiché dovresti sommare i numeri dalla prima colonna (o omettere il nome del processo e semplicemente il valore di ogni riga di output) per ottenere il totale (in%) Utilizzo della CPU.

Il lato positivo è che con un po 'più di lavoro, potresti ottenere la quantità specifica di CPU utilizzata dal tuo processo di esecuzione, piuttosto che il consumo complessivo di CPU di sistema.

I benchmark WMI praticamente tutto in Windows, incluso il caricamento del sistema.

Ho trovato una discussione al riguardo .

Usa semplicemente le API standard win32 (GTC)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top