Domanda

Ho il sospetto che una delle mie applicazioni consumi più cicli di CPU di quanto desidero.Il problema è che accade a raffica e il solo fatto di guardare il task manager non mi aiuta poiché mostra solo l'utilizzo immediato.

Esiste un modo (su Windows) per tenere traccia della cronologia dell'utilizzo della CPU e della memoria per alcuni processi.Per esempio.Inizierò a monitorare "Firefox" e dopo circa un'ora vedrò un grafico dell'utilizzo della CPU e della memoria durante quell'ora.

Sto cercando uno strumento già pronto o un modo programmatico per raggiungere questo obiettivo.

È stato utile?

Soluzione

Basta digitare perfmon in Start > Run e premi invio.Quando la finestra Performance è aperta, fai clic sul segno + per aggiungere nuovi contatori al grafico.I contatori rappresentano aspetti diversi del funzionamento del tuo PC e sono raggruppati per somiglianza in gruppi chiamati "Oggetti prestazioni".

Per le vostre domande potete scegliere gli oggetti performance "Processo", "Memoria" e "Processore".Potrai quindi vedere questi contatori in tempo reale

È inoltre possibile specificare l'utilità per salvare i dati sulle prestazioni per l'ispezione successiva.Per fare ciò, seleziona "Registri e avvisi sulle prestazioni" nel pannello di sinistra.(È proprio sotto la console Monitor di sistema che ci fornisce i contatori sopra menzionati.Se non è presente, fare clic su "File" > "Aggiungi/rimuovi snap-in", fare clic su Aggiungi e selezionare "Registri e avvisi sulle prestazioni" nell'elenco".) Da "Registri e avvisi sulle prestazioni", creare una nuova configurazione di monitoraggio in "Registri del contatore".Quindi è possibile aggiungere i contatori, specificare la frequenza di campionamento, il formato del registro (binario o testo semplice) e la posizione del registro.

Altri suggerimenti

Esplora processi può mostrare il tempo totale della CPU impiegato da un processo, nonché un grafico cronologico per processo.

Utilizzando perfmon.exe, ho provato a utilizzare il contatore "Byte privati" nei contatori "Processo" per monitorare l'utilizzo della memoria e funziona bene.

forse puoi usare questo.Dovrebbe funzionare per te e riporterà il tempo del processore per il processo specificato.

@echo off
: Rich Kreider <rjk@techish.net>
: report processor time for given process until process exits (could be expanded to use a PID to be more
: precise)
: Depends:  typeperf
: Usage:  foo.cmd <processname>

set process=%~1
echo Press CTRL-C To Stop...
:begin
for /f "tokens=2 delims=," %%c in ('typeperf "\Process(%process%)\%% Processor Time" -si 1 -sc 1 ^| find /V "\\"') do (
if %%~c==-1 (
goto :end
) else (
echo %%~c%%
goto begin
)
)

:end
echo Process seems to have terminated.

Sono d'accordo, perfmon.exe ti consente di aggiungere contatori (fai clic con il pulsante destro del mouse sul pannello di destra) per qualsiasi processo che desideri monitorare.

Oggetto della prestazione:Controllare il processo "Seleziona istanze dall'elenco" e selezionare Firefox.

WMI è Strumentazione gestione Windows ed è integrato in tutte le versioni recenti di Windows.Ti consente di tenere traccia a livello di codice di cose come l'utilizzo della CPU, l'I/O del disco e l'utilizzo della memoria.

Perfmon.exe è un front-end GUI per questa interfaccia e può monitorare un processo, scrivere informazioni in un registro e consentire di analizzare il registro dopo l'esecuzione.Non è il programma più elegante del mondo, ma fa il suo lavoro.

Process Lasso è progettato più per l'automazione dei processi e l'ottimizzazione delle classi di priorità, non per i grafici.Detto questo, è così fa offre la cronologia di utilizzo della CPU per processo (disegnata come una linea bianca sul grafico), ma lo fa NON offrire la cronologia dell'utilizzo della memoria per processo.

DISCLAIMER:Sono l'autore di Process Lasso, ma in realtà non lo sostengo qui, poiché esistono soluzioni migliori (perfmon è la migliore).

La cosa migliore in assoluto è Resource and Performance Monitor di Windows Vista+.Può tenere traccia dell'utilizzo di CPU, memoria, rete e accessi al disco da parte dei processi nel tempo.È un'ottima utility per le informazioni di sistema generali che avrebbe dovuto essere creata molto tempo fa.A meno che non mi sbagli, può tenere traccia dell'utilizzo della CPU e della memoria per processo nel tempo (tra le altre cose elencate).

Puoi anche provare a utilizzare uno script C#/Perl/Java per ottenere i dati di utilizzo utilizzando i comandi WMI e di seguito sono riportati i passaggi.

Dobbiamo eseguire 2 query di selezione WMI e applicare la formula di utilizzo% della CPU

1.Per recuperare il numero totale di processi logici

select NumberOfLogicalProcessors from Win32_ComputerSystem

2.Per recuperare i valori di PercentProcessorTime, TimeStamp_Sys100NS (è stata applicata la formula di utilizzo della CPU per ottenere la percentuale di utilizzo effettiva) e WorkingSetPrivate (RAM) almeno 2 volte con un intervallo di sospensione di 1 secondo

select * from Win32_PerfRawData_PerfProc_Process where IDProcess=1234

3.Applicare la formula di utilizzo% CPU

CPU%= ((p2-p1)/(t2-t1)*100)/NumberOfLogicalProcessors

p2 indica PercentProcessorTime recuperato per la seconda volta e p1 indica PercentProcessorTime recuperato per la prima volta, t2 e t1 indicano TimeStamp_Sys100NS.

Un esempio di codice Perl per questo può essere trovato nel collegamento http://www.craftedforeveryone.com/cpu-and-ram-utilization-of-an-application-using-perl-via-wmi/

Questa logica si applica a tutti i linguaggi di programmazione che supportano le query WMI

Anche se non l'ho provato, ProcDump sembra una soluzione migliore.

Descrizione dal sito:

ProcDump è un'utilità della riga di comando il cui scopo principale è monitorare un'applicazione per i picchi della CPU e generare dump di arresti anomali durante un picco che un amministratore o uno sviluppatore può utilizzare per determinare la causa del picco.ProcDump include anche il monitoraggio delle finestre bloccate (utilizzando la stessa definizione di finestra bloccata utilizzata da Windows e Task Manager), il monitoraggio delle eccezioni non gestite e può generare dump in base ai valori dei contatori delle prestazioni del sistema.Può anche fungere da utilità generale di dump del processo che è possibile incorporare in altri script.

Hmm, lo vedo Esplora processi può farlo, anche se i suoi grafici non sono troppo convenienti.Sto ancora cercando modi alternativi/migliori per farlo.

Perfmon.exe è integrato in Windows.

Potresti voler dare un'occhiata Processo Lazo.

In Windows 10, il Task Manager può mostrarti le ore di CPU cumulative.Basta andare alla scheda "Cronologia app" e "Elimina cronologia di utilizzo".Ora lascia le cose in esecuzione per un'ora o due:

Windows 10 Cumulative CPU time

Ciò che NON fa è suddividere l'utilizzo nei browser per scheda.Molto spesso le schede inattive svolgono un'enorme quantità di lavoro, poiché ciascuna scheda aperta consuma energia e rallenta il PC.

Utilizzo taskinfo per il grafico cronologico della velocità CPU/RAM/IO.http://www.iarsn.com/taskinfo.html

Ma le esplosioni di mancata risposta sembrano più un tempo di interruzione dovuto a un'unità HD/SS difettosa.

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