it-swarm-eu.dev

Verfolgung der CPU- und Speicherauslastung pro Prozess

Ich vermute, dass eine meiner Anwendungen mehr CPU-Zyklen beansprucht, als ich möchte. Das Problem ist - es passiert in Bursts, und der Task Manager zu betrachten hilft mir nicht, da er nur die sofortige Verwendung zeigt.

Gibt es eine Möglichkeit (unter Windows), um den Verlauf der CPU & Memory-Nutzung für einen bestimmten Prozess zu verfolgen. Z.B. Ich werde anfangen, "firefox" zu verfolgen, und nach etwa einer Stunde wird ein Diagramm der CPU- und Speicherauslastung in dieser Stunde angezeigt.

Ich suche entweder nach einem vorgefertigten Werkzeug oder nach einem programmatischen Weg, um dies zu erreichen.

147
Eli Bendersky

Geben Sie einfach perfmon in Start > Run ein und drücken Sie die Eingabetaste. Wenn das Performance-Fenster geöffnet ist, klicken Sie auf das Pluszeichen, um dem Diagramm neue Zähler hinzuzufügen. Die Zähler sind verschiedene Aspekte der Funktionsweise Ihres PCs und werden nach Ähnlichkeit in Gruppen mit dem Namen "Performance Object" gruppiert.

Für Ihre Fragen können Sie die Leistungsobjekte "Prozess", "Speicher" und "Prozessor" auswählen. Sie können diese Zähler dann in Echtzeit sehen

Sie können auch das Dienstprogramm angeben, um die Leistungsdaten später für Ihre Inspektion zu speichern. Wählen Sie dazu im linken Bereich "Leistungsprotokolle und Warnungen" aus. (Sie befindet sich direkt unter der Systemmonitor-Konsole, die uns die oben genannten Leistungsindikatoren bietet. Wenn dies nicht der Fall ist, klicken Sie auf "Datei"> "Snap-In hinzufügen/entfernen"), klicken Sie auf Hinzufügen und wählen Sie "Leistungsprotokolle und Warnungen" in der Liste aus ".) Erstellen Sie unter" Leistungsprotokolle und Warnungen "eine neue Überwachungskonfiguration unter" Zählerprotokolle ". Anschließend können Sie die Zähler hinzufügen, die Abtastrate, das Protokollformat (binärer oder Nur-Text) und den Protokollspeicherort angeben.

156
Martin08

Process Explorer kann die von einem Prozess insgesamt benötigte CPU-Zeit sowie einen Verlaufsdiagramm pro Prozess anzeigen.

40
Niall

Mit perfmon.exe habe ich versucht, den "Private Bytes" -Zähler unter "Prozess" -Zähler für die Speicherbelegung zu verwenden, und es funktioniert gut.

15
CppNoob

vielleicht kannst du das benutzen. Es sollte für Sie funktionieren und die Prozessorzeit für den angegebenen Prozess melden.

@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

Ich bin damit einverstanden, perfmon.exe ermöglicht Ihnen das Hinzufügen von Zählern (Rechtsklick im rechten Bereich) für jeden Prozess, den Sie überwachen möchten.

Leistungsobjekt: Prozess Markieren Sie "Instanzen aus Liste auswählen" und wählen Sie "Firefox" aus.

7
Ady Romantika

WMI ist Windows Management Instrumentation und in allen neueren Versionen von Windows integriert. Damit können Sie Dinge wie CPU-Auslastung, Festplatten-E/A und Speicherauslastung programmgesteuert nachverfolgen.

Perfmon.exe ist ein GUI-Frontend für diese Schnittstelle. Es kann einen Prozess überwachen, Informationen in ein Protokoll schreiben und das Protokoll anschließend analysieren. Es ist nicht das eleganteste Programm der Welt, aber es erledigt die Arbeit. 

6
doflynn

Process Lasso ist eher für die Prozessautomatisierung und Prioritätsklassenoptimierung gedacht, nicht für Diagramme. Das heißt, bietet die pro-Prozess-CPU-Auslastungshistorie (als weiße Linie in der Grafik gezeichnet), aber NICHT die pro-Prozess-Speicherauslastungshistorie. 

HAFTUNGSAUSSCHLUSS: Ich bin der Autor von Process Lasso, unterstütze es aber hier nicht wirklich, da es bessere Lösungen gibt (Perfmon ist die beste Lösung).

Das Beste, was es gibt, ist Windows Vista + Resource and Performance Monitor. Es kann die Nutzung von CPU-, Arbeitsspeicher-, Netzwerk- und Festplattenzugriffen durch Prozesse im Laufe der Zeit verfolgen. Es ist ein hervorragendes Dienstprogramm für Systeminformationen, das vor langer Zeit erstellt werden sollte. Wenn ich mich nicht irre, kann es die pro-Prozessor-CPU- und Speicherauslastung im Laufe der Zeit verfolgen (unter anderem).

2
dyasta

Obwohl ich dies nicht ausprobiert habe, scheint ProcDump eine bessere Lösung zu sein.

Beschreibung von der Site:

ProcDump ist ein Befehlszeilendienstprogramm, dessen Hauptzweck darin besteht, eine Anwendung auf CPU-Spitzen zu überwachen und während eines Spitzenwerts Absturzabbilder zu erstellen, die ein Administrator oder Entwickler verwenden kann, um die Ursache des Spitzenwerts zu ermitteln. ProcDump umfasst auch die Überwachung von Hung-Fenstern (mit derselben Definition eines Windows-Hangs, die von Windows und Task Manager verwendet wird), die Überwachung nicht behandelter Ausnahmen und kann Dumps auf der Grundlage der Werte der Systemleistungsindikatoren generieren. Es kann auch als allgemeines Prozessabbild-Dienstprogramm dienen, das Sie in andere Skripts einbetten können.

2
sean

Vielleicht möchten Sie einen Blick auf Process Lasso werfen.

1
maksa

Sie können auch versuchen, ein C #/Perl/Java-Skript zu verwenden, um die Auslastungsdaten mithilfe von WMI-Befehlen abzurufen. Nachfolgend finden Sie die Schritte dazu.

Wir müssen 2 WMI-Select-Abfragen ausführen und die CPU-Auslastungsformel anwenden

1. So rufen Sie die Gesamtzahl des logischen Prozesses ab 

select NumberOfLogicalProcessors from Win32_ComputerSystem

2. Um die Werte von PercentProcessorTime abzurufen, erhalten TimeStamp_Sys100NS (CPU-Auslastungsformel wird der tatsächliche Auslastungsprozentsatz ermittelt) und WorkingSetPrivate (RAM) mindestens zweimal mit einem Ruheintervall von 1 Sekunde.

select * from Win32_PerfRawData_PerfProc_Process where IDProcess=1234

3. CPU% Auslastungsformel anwenden

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

p2 gibt an, dass PercentProcessorTime zum zweiten Mal abgerufen wurde, und p1 gibt an, dass PercentProcessorTime das erste Mal abgerufen wurde. t2 und t1 stehen für TimeStamp_Sys100NS.

Ein Beispiel-Perl-Code dafür finden Sie im Link http://www.craftedforeveryone.com/cpu-and-ram-useilization-of-an-application-using-Perl-via-wmi/

Diese Logik gilt für alle Programmiersprachen, die WMI-Abfragen unterstützen

1
Kaarthikeyan

Hmm, ich sehe, dass Process Explorer es kann, obwohl seine Grafiken nicht zu bequem sind. Suchen Sie immer noch nach alternativen/besseren Möglichkeiten, dies zu tun.

1
Eli Bendersky

Perfmon.exe ist in Windows integriert.

1
SaaS Developer

Unter Windows 10 kann der Task-Manager die kumulativen CPU-Stunden anzeigen. Gehen Sie einfach zur Registerkarte "App-Verlauf" und "Nutzungsverlauf löschen". Lassen Sie die Dinge jetzt ein oder zwei Stunden laufen:

 Windows 10 Cumulative CPU time

Was dies NICHT tut, ist die Verwendung von Browsern nach Tabs. Häufig erledigen inaktive Tabs enorme Arbeit, wobei jeder geöffnete Tab Energie verbraucht und Ihren PC verlangsamt.

1
Bryce

Ich verwende Taskinfo für die Verlaufsgrafik der CPU/RAM/IO-Geschwindigkeit . http://www.iarsn.com/taskinfo.html

Aber Unruhen scheitern, klingen eher nach Unterbrechungszeiten aufgrund eines HD/SS-Laufwerks. 

0
Terrik