it-swarm-eu.dev

Monitoraggio dell'utilizzo della CPU e della memoria per processo

Ho il sospetto che una delle mie applicazioni mangi più cicli della CPU di quanto io voglia. Il problema è che succede a raffica, e solo guardando il task manager non mi aiuta perché mostra solo l'uso immediato.

C'è un modo (su Windows) per tracciare la cronologia dell'utilizzo della CPU e della memoria per alcuni processi. Per esempio. Inizierò a rintracciare "firefox", e dopo circa un'ora vedremo un grafico della CPU e dell'uso della memoria durante quell'ora.

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

147
Eli Bendersky

Basta digitare perfmon in Start > Run e premere invio. Quando la finestra Prestazioni è aperta, fai clic sul segno + per aggiungere nuovi contatori al grafico. I contatori sono diversi aspetti di come funziona il tuo PC e sono raggruppati per similarità in gruppi chiamati "Oggetto Performance".

Per le tue domande, puoi scegliere gli oggetti di performance "Processo", "Memoria" e "Processore". Quindi puoi vedere questi contatori in tempo reale

È inoltre possibile specificare l'utilità per salvare i dati sulle prestazioni per l'ispezione in un secondo momento. Per fare ciò, selezionare "Registri e avvisi delle prestazioni" nel riquadro di sinistra. (È proprio sotto la console di System Monitor che ci fornisce i contatori menzionati sopra. Se non è presente, fai clic su "File"> "Aggiungi/rimuovi snap-in", fai clic su Aggiungi e seleziona "Avvisi e registri di prestazioni" nell'elenco ".) Dai" Registri e Avvisi delle prestazioni ", creare una nuova configurazione di monitoraggio in" Registri contatori ", quindi aggiungere i contatori, specificare la frequenza di campionamento, il formato del registro (binario o testo normale) e la posizione del registro.

156
Martin08

Process Explorer può mostrare il tempo totale della CPU impiegato da un processo, così come un grafico cronologico per processo.

40
Niall

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

15
CppNoob

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

@echo off
: Rich Kreider <[email protected]>
: 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.
10
Rich Kreider

Sono d'accordo, perfmon.exe consente di aggiungere contatori (tasto destro del mouse sul pannello di destra) per qualsiasi processo che si desidera monitorare.

Oggetto prestazione: Processo Selezionare "Seleziona istanze dall'elenco" e selezionare firefox.

7
Ady Romantika

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

Perfmon.exe è un'interfaccia grafica per questa interfaccia e può monitorare un processo, scrivere informazioni in un registro e consentire di analizzare il registro dopo il fatto. Non è il programma più elegante del mondo, ma svolge il suo lavoro. 

6
doflynn

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

NOTA BENE: Sono l'autore di Process Lasso, ma in realtà non lo approvo qui - poiché ci sono soluzioni migliori (perfmon è il migliore).

La cosa migliore di sempre è Windows Vista + Resource and Performance Monitor. È in grado di tracciare l'utilizzo degli accessi CPU, memoria, rete e disco per processi nel tempo. Si tratta di una grande utilità di informazione generale del sistema che avrebbe dovuto essere creata molto tempo fa. A meno che non mi sbagli, è in grado di monitorare CPU per processo e utilizzo della memoria nel tempo (tra le altre cose elencate).

2
dyasta

Sebbene non l'abbia provato, ProcDump sembra una soluzione migliore.

Descrizione dal sito:

ProcDump è un'utilità della riga di comando il cui scopo principale è il monitoraggio di un'applicazione per i picchi della CPU e la generazione di dump di arresto anomalo durante un picco che un amministratore o uno sviluppatore può utilizzare per determinare la causa dello spike. ProcDump include anche il monitoraggio della finestra sospesa (utilizzando la stessa definizione di un blocco della finestra utilizzato da Windows e Task Manager), il monitoraggio delle eccezioni non gestito e può generare dump in base ai valori dei contatori delle prestazioni del sistema. Può anche fungere da utility di dump di processo generale che è possibile incorporare in altri script.

2
sean

Potresti dare un'occhiata a Process Lasso .

1
maksa

Puoi anche provare a usare uno script C #/Perl/Java per ottenere i dati di utilizzo usando i Comandi WMI e di seguito i passaggi per esso.

Abbiamo bisogno di eseguire 2 query WMI Select 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 (la formula di utilizzo della CPU è stata applicata 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. Applica la formula di utilizzo% CPU

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

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

Un codice Perl di esempio per questo può essere trovato nel link 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

1
Kaarthikeyan

Hmm, vedo che Process Explorer può farlo, anche se i suoi grafici non sono troppo convenienti. Sto ancora cercando alternative/modi migliori per farlo.

1
Eli Bendersky

Perfmon.exe è incorporato in Windows.

1
SaaS Developer

Sotto Windows 10, il Task Manager può mostrare le ore di CPU cumulative. Vai alla scheda "Cronologia app" e "Elimina cronologia di utilizzo". Ora lascia le cose in funzione per un'ora o due:

 Windows 10 Cumulative CPU time

Ciò che NON fa è abbattere l'utilizzo nei browser per scheda. Abbastanza spesso le schede inattive faranno un'enorme quantità di lavoro, con ogni scheda aperta che usa l'energia e rallenta il PC.

1
Bryce

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

Ma scoppi di insensibilità, sembra più il tempo di interruzione a causa di un falso disco HD/SS. 

0
Terrik