CPU Belastung eines Prozzesses in Prozent berechnen.

Mit

WMIC /OUTPUT:C:\temp\ProcessList.txt PROCESS get Caption,ProcessId, ExecutablePath,ParentProcessID,KernelModeTime,UserModeTime

Möchte ich bestimmte Prozzesse beobachten.
( Starte eine Batch Datei alle 5 min per geplanten Task).
Wieviel, welcher Art, von welchen ElternProzzzes, und die CPU Belastung in %.

Die ersten habe ich. Aber bei der Prozzessorbelastung in % tue ich micht schwer, weil die Angaben in Nanosekunden sind und nicht in Prozent. (Deswegen kann es noch sein das Batch gar nicht das richtige ist wegen den hohen Zahlen).

Langsam wird es er eine theoritsche Frage. Wie ich von dem Nanosekunde auf die Prozentualle Rechnerauslastung komme.
Alls möglichen Rechnenformelansätze die ich bis jetzt gefunden habe, und erst versucht habe per Excel auszuprobieren, wahren nicht wirklich erfolgversprechend.

Also ich habe folgende Textdatei mit den Zeiten der Prozzesse und möchte dann jetzt die prozentuale Verteilung.


Im Moment verfolge ich folgende Theorie.

- System Idel Process + System + KernelModeTime + UserModeTime von jeden Process zusammenaddiert ergeben 100 %. => Systemzeit

- Die Zeit eines Prozesses ist KernelModeTime + UserModeTime dieses Prozzesses => Prozzeszeit

- Die Prozentuale Belastung des Systems durch den Prozesse ist dann Prozzeszeit / Systemzeit *100 => Prozentualle Belastung .


Kann mir jemand bestätigen oder wiederlegen ob meine Überlegung richtig ist .

Und dann wie ich dann die Berechnung in Batch oder eventuell in VBS vornehme.

Viele Dank im Vorraus

Content-Key: 187255

Url: https://administrator.de/contentid/187255

Ausgedruckt am: 23.01.2022 um 07:01 Uhr

Mitglied: mycroftone
mycroftone 29.06.2012 um 17:14:54 Uhr
Goto Top
Also die Berechnung an sich Stimmt.

Habe ich jetzt mit Excel nochmal nachgeprüft.

Einfach die Werte aus der Spalte KernelModeTime und der Spalte UserModetime unten einmal Addieren.
Dann die zweit Werte zusammen Addieren.
Eine neuen Spalten in den die KernelModeTime und UserModetime zusammen Addiertwerden.
Und dann wieder eine neue Spalte in der der letzt Wert durch die Gesamtzeit gezeilt wird.
Wenn man dann alle Werte unten wieder zusammenzählt kommt 1 raus.
Also alle zusammen sind 100 Prozent.

Aber jetzt happerts an der Umsetzung .

Bei eine Batchdatei ist schon alleine das Zusammenzählen der Werte in eine For / K schleife schwierig weil zuviele Leerzeichen in Pfaden sein können.
Also Delim exe zu nutzen habe ich auch verworfen weil die ersten beiden EInträge keine exe sind.


ALso kann mir jemand die werte per Batch oder VBS zusammenzählen.
Ich weiß das es hier ein paar findige Leute gibt.
Mitglied: rubberman
rubberman 29.06.2012 um 21:03:35 Uhr
Goto Top
Hallo mycroftone,

so wie du das angehst, wirst du doch nie die Werte voneinander separieren können. Versuche doch wenigstens was Auswertbares daraus zu machen. Per Batch vielleicht erst mal so:
So spuckt dir der Code wenigstens ein "deutsch" umformatiertes (mit Semikola als Trennzeichen) CSV Format aus. Damit könntest du dann in Excel weiter arbeiten.

Da du damit aber noch nicht on the fly zum Ergebnis kommst und das per Batch auch nicht möglich ist, frage ich mich
- Warum Batch und nicht gleich VBS oder eine andere Sprache?
- Wie soll das Ergebnis der Aktion eigentlich aussehen? Ein zusätzlicher Prozentwert in jeder Zeile? In welchem Format?

Grüße
rubberman
Mitglied: 76109
76109 01.07.2012 um 18:35:43 Uhr
Goto Top
Hallo mycroftone!

Hier mal ein VBS-Skript (*.vbs), dass eine CSV-Datei mit Prozentangabe (letzte Spalte) erstellt:


Gruß Dieter
Mitglied: rubberman
rubberman 01.07.2012, aktualisiert am 02.07.2012 um 00:29:51 Uhr
Goto Top
Hallo Zusammen.

@Dieter
Ähnlich hätte ich es vermutlich auch gelöst - vielleicht mit einem Recordset zur Sortierung der Daten, á la
[EDIT]Dieters Anregung folgend, Arrayelemente durch Namen ersetzt.[/EDIT]

@mycroftone
Ich weiß nicht recht, ob es das ist was du suchst. Natürlich bekommst du so keine Momentaufnahme (für eine eingeschränkte Zeitspanne), sondern eine Zusammenfassung über die gesamte Dauer der Windowssitzung. Heißt, ein Prozess der gerade erst gestartet wurde und momentan fast 100% CPU Auslastung verursacht, schlägt in deiner Auswertung vermutlich mit <1% zu Buche.

Grüße
rubberman
Mitglied: 76109
76109 01.07.2012 um 23:52:51 Uhr
Goto Top
Hallo rubberman!

Die Idee, einen ADO-Recordset zu verwenden, finde ich auch ganz gut;-) face-wink

Allerdings würde ich, wenn die Felder eh schon Namen haben, diese auch im restlichen Code - zwecks besserer Übersicht - mit Namen ansprechen.

Gruß Dieter
Mitglied: rubberman
rubberman 02.07.2012 um 00:26:49 Uhr
Goto Top
Hallo Dieter,

einverstanden, ich werde es apassen. Der Grund dafür war, dass Änderungen (englische durch deutsche Feldnamen ersetzen o.ä.) nur an einer Stelle vergenommen werden müssten. Redundanzen sind dabei fehleranfälliger. Da Editoren aber heute eine "Ersetzen" Funktion mitbringen, ist das nicht weiter tragisch ;-) face-wink

Grüße
rubberman
Mitglied: 76109
76109 02.07.2012 um 00:48:14 Uhr
Goto Top
Hallo rubberman!

einverstanden, ich werde es apassen.
Ein Weiser Entschluß:-) face-smile
Der Grund dafür war, dass Änderungen (englische durch deutsche Feldnamen
ersetzen o.ä.) nur an einer Stelle vergenommen werden müssten.
Das hatte ich auch so verstanden;-) face-wink
Da Editoren aber heute eine "Ersetzen" Funktion mitbringen,
ist das nicht weiter tragisch
Das sehe ich genauso;-) face-wink

Gruß Dieter
Mitglied: mycroftone
mycroftone 03.07.2012 um 13:03:04 Uhr
Goto Top
Hallo Zusammen

Besten dank für die Programmiertechnische Umsetzung meiner Formel zur Prozessorbelastung pro Einzelprozzes.
Meine Versuch das ganze in Batch zu realisieren habe ich abgebrochen.

Aber irgendwie ist glaub ich in meiner Formel trotzdem ein Fehler drin.

Laut der habe ich immer so 97-98 Prozent die nichts tun.

Wenn ich meinen FLY Player starte dann habe ich so 6-7 Prozent Auslastung laut Taskmanager und Prozessexplorer.
Wenn ich dann die zwei Scripte starte dann sagen beiden die Prozzesorauslastung läge bei 0,0001 % .

Also zwischen den beiden Werten liegen Welten.
Kann mir jemand sagen wo da der Wurm in der Formel ist.
Mitglied: 76109
76109 03.07.2012 um 15:23:55 Uhr
Goto Top
Hallo mycroftone!

Die Formel stimmt schon, aber die gelieferten Werte taugen nicht für eine Berechnung der aktuellen Prozessleistung.

Die Zeit wird ja nur aufaddiert und dadurch auch nicht mehr weniger. D.h. wenn ich z.B. den Virenscanner starte, dann steigt die KernelModeTime und UserModeTime masiv an und bleibt nach Fertigstellung weiterhin in seiner Größe erhalten, was zur Folge hat, dass der Virenscanner danach zwar 0% Last zieht aber immernoch eine hohe Prozesslast berechnet wird während die anderen Prozesse so vor sich hin döddeln.

Du kannst auf diese Weise also nur ermitteln, wieviel Last ein Prozess insgesamt seit dem Windows-Start gezogen hat.

Gruß Dieter
Mitglied: mycroftone
mycroftone 03.07.2012 um 15:49:36 Uhr
Goto Top
Hallo Didi1954

Muß ich dann 2 Messungen hintereinander machen und dann die Differenz nehmen.
Und dann auf die Tabellen die Berechnung vornehmen.

Komme ich dann er auf eine Derzeitige Prozzesorlast.

Mycroft
Mitglied: rubberman
rubberman 03.07.2012 um 20:41:47 Uhr
Goto Top
Hallo mycroftone.

Zitat von @mycroftone:
Komme ich dann er auf eine Derzeitige Prozzesorlast.

Klingt doch nicht schlecht. Eine gewisse Zeitspanne (iWait) muss aber dazwischen liegen. Versuch macht klug ...
Prozesse, die während der Laufzeit des Scripts hinzukommen oder beendet werden, werden nicht betrachtet.

Grüße
rubberman
Mitglied: 76109
76109 03.07.2012 aktualisiert um 21:14:17 Uhr
Goto Top
Hallo @mycroftone, Hallo rubberman!

Das war eine sehr gute Idee und rubberman hat's ja inzwischen gerichtet;-) face-wink

Der Vollständigkeit halber, habe ich mein Skript dann eben auch mal etwas angepasst:
wobei Du die Pausen bzw. Start-/Stopzeiten nach Belieben anpassen kannst.

Gruß Dieter
Mitglied: mycroftone
mycroftone 03.07.2012 um 22:22:10 Uhr
Goto Top
Ja Super! Funktioniert.

Wenn ich eine Prozess starte der laut Taskmanager und Prozessexplorer 16 % beansprucht.
Hat auch Ruppermans und Didis Prozessliste und 14 % beansprucht.

Auch wenn man Prozessexplorer und Ruppermans Liste gegenüberstellt stimmen die obersten Prozesse überein.

Besten dank.
Heiß diskutierte Beiträge
general
Liste von URLs in wininet.dllFennek11Vor 1 TagAllgemeinInternet13 Kommentare

Hallo, die Frage ist zugleich enrsthaft und Satire: Windows enthält die Datei "c:\windows\system32\wininet.dll", die für viele Verbindungen ins Internet benötigt wird. Ein Blick in die ...

question
2 Faktor Authentifizierung generell abschaltenratzekahl1Vor 1 TagFrageGoogle Android9 Kommentare

Hallo zusammen, ich habe eine Frage: Kann ich in Google die 2 Faktor Authentifizierzung generell abschalten? Wenn ich ein Gerät als vertrauenswürdig hinzugefügt habe, ja, ...

question
Netzwerk Grafisch darstellen?FireWorldVor 1 TagFrageInternet8 Kommentare

Hallo, ich bin der Zeit auf der Suche nach einem Programm zur Grafischen Darstellung von inbound/outbound eines Servers in einem Rechenzentrum. Hat Jemand eine idee ...

info
Ruhe in Frieden, HackbratenVision2015Vor 1 TagInformationOff Topic5 Kommentare

Der US-Sänger Meat Loaf ist tot. Er starb laut seiner Facebook-Seite in der vergangenen Nacht im Alter von 74 Jahren. Meat Loaf, mit bürgerlichem Namen ...

question
Fritz Repeater 1750E "verloren"reksierpVor 1 TagFrageHardware9 Kommentare

Hallo, ich habe ein 150 Jahre altes Haus (ehemaliger Dorf-Bahnhof), sehr verwinkelt, viele Räume, mit Anbau, 2 Kriech-Dachböden. Vor mehreren Jahren hab ich einige Repeater ...

question
Tablet-Display defekt: wie Zugriff auf DatenMahstarDVor 1 TagFrageGoogle Android6 Kommentare

Guten Abend, ich habe ein Tablet überreicht bekommen mit der Bitte um den Versuch einer Datenrettung. Tablet: Samsung Galaxy Tab-A (2016, SM-T585) Das Display ist ...

info
SonicWall Bootloop seit letzter NachtSt-AndreasVor 1 TagInformationFirewall2 Kommentare

Sonicwall Gen 7 spielen Bootloop seit letzter Nacht. Hilfe dazu hier ...

question
Verständnisproblem SubnettingKarolaVor 19 StundenFrageNetzwerkgrundlagen6 Kommentare

Hallo, möchte mal nerven weil ich keine Antwort finde Ein Netzwerk 172.16.0.0 /16 besteht aus einem alten Router als 4 Port Switch und 4 Clients. ...