Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Performance Counter (https://www.delphipraxis.net/186306-performance-counter.html)

Mattze 22. Aug 2015 09:59

Performance Counter
 
Hallo,

diesmal wende ich mich gleich mit zwei Fragen an Euch, die aber (wahrscheinlich?) zusammenhängen.
Am besten ein konkretes Beispiel:
Im Objekt "Prozess" gucke ich mir die "Prozessorzeit (%)" an.
Sie ist vom Datatyp Perf_Obj_Time_Timer.

1. Ich kriege da maasige Werte. Der kleinste liegt über 300.000,00% (!?).
Warum sind das soviele Werte und was bedeuten die einzelnen.

2. Wie kriege ich nun die "richtige" Prozentzahl? Nach dem perfmon müsste das so um die 1% sein.
Es ist natürlich nicht schwer, das nach der entsprechenden Formel zu berechnen.
Nur, wo kriege ich die Variablen her?

Kann mir da jemand einen Tipp geben? (Delphi 7 pro)

Gruß
Mattze

Sir Rufo 22. Aug 2015 10:41

AW: Performance Counter
 
War Quark - Wenn es ein Perf_Obj_Time_Timer ist, sollte eigentlich einen Prozentwert da sein ...

Mattze 22. Aug 2015 11:03

AW: Performance Counter
 
Hallo,

statt einer Antwort von mir, etwas von Microsoft:

1. "Prozentuale Angabe der verstrichenen Prozessorzeit, die zum Ausführen eines Threads benötigt wird, der sich nicht im Leerlauf befindet. Der Leistungsindikator wird berechnet, indem der Prozentwert der Zeit gemessen wird, die der Prozessor zum Ausführen des Threads im Leerlauf benötigt. Dieser Wert wird dann von 100 % subtrahiert. (Jeder Prozessor besitzt einen Leerlaufthread, der Zyklen belegt, wenn keine anderen Threads ausgeführt werden können.) Dieser Leistungsindikator ist die primäre Anzeige der Prozessoraktivität und zeigt die durchschnittliche prozentuale Belegung während des Abtastintervalls an. Es sollte beachtet werden, dass die Berechnung, ob der Prozessor sich im Leerlauf befindet, in einem internen Abtastintervall der Systemuhr (10 ms) durchgeführt wird. Da die Prozessoren heute sehr schnell sind, kann der Leistungsindikator daher die Prozessorauslastung unterschätzen, da der Prozessor möglicherweise viel Zeit mit dem Bedienen von Threads zwischen dem Systemuhr-Abtastintervall aufwendet. Arbeitslastbasierte Zeitgeberanwendungen sind ein Beispiel für Anwendungen, bei denen eine nicht genaue Messung wahrscheinlicher ist, da Zeitgeber unmittelbar nach dem Abtasten signalisiert werden."

2. https://technet.microsoft.com/en-us/...=ws.10%29.aspx

Da steht was von "Prozent" oder sehe ich das falsch?

Gruß
Mattze

frankyboy1974 22. Aug 2015 11:17

AW: Performance Counter
 
hallo,

also ich habe diese thread gefunden, nur mal überflogen.

https://msdn.microsoft.com/de-de/library/ms974615.aspx

performancen counter scheint doch schwerer als gedacht.


mfg


frank

Mattze 22. Aug 2015 13:31

AW: Performance Counter
 
Hallo frakyboy1974,

eben, genau das ist das Problem.
Ich dachte (hoffte) auch, es wäre ziemlich einfach und geradlinig zu machen.
Denkste! Aber nicht mit MS!

Ich will da mal ein Sprichwort anpassen:
Versuche es gründlich rauszukriegen, wenn du Zeit hast, dann weißt du es und kannst es, wenn es mal dringend gemacht werden muss.

("Spare in der Zeit, dann hast du in der Not!")

Also, ich habe da schon vieles abgeklappert. Jetzt werde ich mal gucken, ob ich etwas in (v)c(pp)-Beispielen finde.
Fertige Klassen (c#) helfen da leider nicht!

Übrigens: Auch im WMI zeigt der da "Mrd-Prozente" an!

Evtl. muss man da 2 Snapschüsse kurz hintereinander machen und dann die entsprechenden Instanzen nach der Formel berechnen. Fragt sich aber, welche Instanz der perfmon anzeigt und warum diese.

Fragen über Fragen, nur keine Antwort...

Gruß
Mattze

hathor 22. Aug 2015 13:45

AW: Performance Counter
 
Performance Monitoring in Delphi

Mattze 22. Aug 2015 14:41

AW: Performance Counter
 
Hallo,

vielen Dank. Das war aber nicht das Problem.
Das GetCPUUsage (auch für einzelne Kerne) habe ich schon lange.

Die "Prozessorzeit (%)" aus den PerformanceCountern ist etwas gaaaanz anderes.

Außerdem würde mich das Rechenprinzip für Perf_Obj_Time_Timer, und nicht nur für diesen Datentyp, interessieren, nicht, wie man das umgehen kann.

Gruß
Mattze

Mattze 22. Aug 2015 18:24

AW: Performance Counter
 
Hallo hathor,

vielen Dank.
So was habe ich gesucht - und nicht gefunden.
Unter Win 7 pro kriege ich es nicht installiert. Er scheint es zwar zu machen, aber ich finde es nicht.

Ich habe mal kurz rübergeschaut. Au-weiha! Einiges für mich zu tuten!

Aber das packe ich schon. Hoffentlich macht es eben nicht nur die direkt verwendbaren RawData und die wenigen Deltas.
Nun, schaun mer mal...

Gruß
Mattze

hathor 22. Aug 2015 18:47

AW: Performance Counter
 
PerfMonClient.exe - Rechtsklick: Als Administrator ausführen

Mattze 23. Aug 2015 11:45

AW: Performance Counter
 
Hallo hathor,

habe ich natürlich gestern probiert. Stand auch irgendwo.
Aber, ich finde trotzdem nix in der Verwaltung.
Gucke ich an der richtigen Stelle?
Muss evtl. ein Neustart nach Install sein?

Gruß
Mattze


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:07 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz