Autor Beitrag
uranop
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 149

Win XP, Win 7, Slackware 11, FreeBSD
D6E, php
BeitragVerfasst: Fr 10.07.09 17:18 
Hallo Leute,

Ich bin gerade dabei so Späße wie RAM Auslastung, CPU Auslastung und eine Prozessliste per WMI zurealisieren.
Die Funktion ist gegeben, nur leider dauert das so lange ...

Ich habe den Timer zum Auslesen der 3 Querys auf 10 Sek gestellt. Das ist mir ehrlich gesagt zu lang.

Kann man es nicht irgendwie realisieren, das man die WMI parallel abfrägt ?

um beispielsweise eine tickrate von 1 Sek zusammen zu bekommen ?

Wär interessant zu wissen.

Thx in advance


Moderiert von user profile iconNarses: Topic aus Sonstiges (Delphi) verschoben am Mo 13.07.2009 um 18:26
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Fr 10.07.09 20:58 
Wenn jede dieser Aktionen separat eine Verbindung zur WMI herstellt, kannst Du allein dadurch bereits Zeit sparen, dass du die Verbindung nur einmalig herstellst und dann alle Abfragen über die gleiche Verbindung realisierst.

Für nähere Aussagen solltest Du aber einmal explizit schauen, was bei Dir die meiste Zeit braucht, da es sich nicht lohnt, an Stellen zu optimieren, die im Vergleich zu anderen nur wenig Zeit benötigen.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19313
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 10.07.09 21:51 
Man kann da schon sehr viel optimieren, ich habe selbst mit einem entsprechenden Systeminfotool herumprobiert.

Dort habe ich nicht nur die Verbindung nur einmal hergestellt, sondern auch alle Werte einer Ergebniszeile direkt hintereinander ausgelesen statt mehrfach die Zeile abzufragen. Relativ gut einbauen lässt sich so etwas in diesen Quelltext:
www.delphi-forum.de/....php?p=551899#551899
uranop Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 149

Win XP, Win 7, Slackware 11, FreeBSD
D6E, php
BeitragVerfasst: So 12.07.09 00:01 
hallo,
mit genao dem code frage ich ab ...

ich habe mittlerweile rausgefunden das die WMI durchaus schnell ist.

ich kann beispielsweise die 3 klassen Win32_Process, _OperatingSystem, _ComputerSystem im 500ms Takt abfragen.
Ohne Probleme.

Nur die Prozessorlast spielt da nicht mit.
da bedarf es noch etwas Tuning kA wie aber mal sehen.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19313
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 12.07.09 11:26 
Also ich kann ja einmal das Projekt anhängen. Allerdings ist da noch ein Speicherleck drin. Aber die Idee hinter dem Konzept sollte klar werden. Richtig funktionieren und aussehen tut es noch nicht, aber darum geht es hier ja auch nicht. ;-)

Ich trenne die Teile der Abfrage um nicht jedesmal das gleiche immer wieder ausführen zu müssen um verschiedene Werte oder so abzufragen. Die Prozessorlast ist so sehr gering. Wobei ich die CPU-Auslastung nicht via WMI hole, sondern nur die anderen Infos.
Du kannst dir ja exemplarisch einmal Units\InfoModules\CustomInfo.pas und Units\InfoModules\HardDiskInfo.pas oder so anschauen.
Einloggen, um Attachments anzusehen!
uranop Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 149

Win XP, Win 7, Slackware 11, FreeBSD
D6E, php
BeitragVerfasst: So 12.07.09 14:52 
nettes prog, dem ist nichts auszusetzen.
aber, so wie ich das sehe ziehst du die cou info vom lokalen rechner.
das bekomme ich auch hin, mit gehts dabei vielmehr um den remote rechner den ich abfragen will .
deswegen der umweg über die wmi.

über die registry gehts ja nur bis win98 und das ist schon lange kein standart mehr bei uns : P
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19313
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 12.07.09 14:54 
Das sollte ja auch nur ein Beispiel dafür sein, das Auslesen der WMI-Informationen zu verteilen um nicht den ganzen Code immer wieder auszuführen. ;-)