CPU-Auslastung auslesen
CPU-Auslastung auslesen
Hi Leutz.
Ich wollt mal nachfragen, wie ich am besten / einfachsten die CPU-Auslastung auslesen kann. Ich weiß das hier im Forum jemand über sein Prog berichtet (Leiste mit CPU, HDD usw) aber leider der code nirgends zu bekommen ist - zumindest dieser Teil.
Hat jemand nen Tipp???
Thx im voraus!
[EDIT Danilo] Verschoben Tipss&Tricks -> Allgemein
Ich wollt mal nachfragen, wie ich am besten / einfachsten die CPU-Auslastung auslesen kann. Ich weiß das hier im Forum jemand über sein Prog berichtet (Leiste mit CPU, HDD usw) aber leider der code nirgends zu bekommen ist - zumindest dieser Teil.
Hat jemand nen Tipp???
Thx im voraus!
[EDIT Danilo] Verschoben Tipss&Tricks -> Allgemein
Agent_Sasori
It's not a bug - it's a feature!
http://www.StephenKalisch.de | http://www.ria-tec.com | http://www.dirsync.de
It's not a bug - it's a feature!
http://www.StephenKalisch.de | http://www.ria-tec.com | http://www.dirsync.de
hi danilo.
grundsätzlich würde mir ne proc ala cpuusage() die einen prozentwert oder ähnliches liefert schon ausreichen.
Leider finde ich in deinen cpu1.pb / cpu2.pb / cpu3.pb zwar eine anwendung, aber die eigentliche procedure fehlt (cpuUsage()). Zudem sind die Proggies nicht lauffähig da einiges fehlt CallCOM usw.
Hast Du die procedure cpuUsage() einzeln (lauffähig), sodass ich sie aufrufen kann und irgendeinen wert zurück bekomme?
grundsätzlich würde mir ne proc ala cpuusage() die einen prozentwert oder ähnliches liefert schon ausreichen.
Leider finde ich in deinen cpu1.pb / cpu2.pb / cpu3.pb zwar eine anwendung, aber die eigentliche procedure fehlt (cpuUsage()). Zudem sind die Proggies nicht lauffähig da einiges fehlt CallCOM usw.
Hast Du die procedure cpuUsage() einzeln (lauffähig), sodass ich sie aufrufen kann und irgendeinen wert zurück bekomme?
Agent_Sasori
It's not a bug - it's a feature!
http://www.StephenKalisch.de | http://www.ria-tec.com | http://www.dirsync.de
It's not a bug - it's a feature!
http://www.StephenKalisch.de | http://www.ria-tec.com | http://www.dirsync.de
Ist doch in den Libs. Libs installieren (PB\PureLibraries\UserLibraries\),Agent hat geschrieben:Hast Du die procedure cpuUsage() einzeln (lauffähig), sodass ich sie aufrufen kann und irgendeinen wert zurück bekomme?
Editor/Compiler neu starten, CpuUsage() aufrufen.
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
PureTools ist eine UserLib, das heißt die Dateien, die du runtergeladen hast, müssen in verschiedene Unterverzeichnisse von PureBasic gepackt werden. Mach das, was in der Readme.txt drinn steht, das heißt öffne die Hilfe von PureTools und mach dann das, was unter Installation steht. Dann starteste PB neu und es sollte alles funktionieren
Die Hilfedatei ist zufinden in der ZIP-Datei unter PureTools_I_020b\PureBasic\Help\PureTools_I.chm
MFG PMV
Die Hilfedatei ist zufinden in der ZIP-Datei unter PureTools_I_020b\PureBasic\Help\PureTools_I.chm
MFG PMV
*schäm*
Recht habt. Ich nehm alles zurück. Habs nicht gesehen.
Manchmal sollte man doch die Readme lesen. (Verdammt)
THX! Hab alles was ich brauch.
...verdammt...verdammt..verdammt...
Recht habt. Ich nehm alles zurück. Habs nicht gesehen.
Manchmal sollte man doch die Readme lesen. (Verdammt)
THX! Hab alles was ich brauch.
...verdammt...verdammt..verdammt...
Agent_Sasori
It's not a bug - it's a feature!
http://www.StephenKalisch.de | http://www.ria-tec.com | http://www.dirsync.de
It's not a bug - it's a feature!
http://www.StephenKalisch.de | http://www.ria-tec.com | http://www.dirsync.de
-
- Beiträge: 266
- Registriert: 22.05.2013 20:35
- Computerausstattung: armseliger Laptop, mit wenig RAM und noch weniger CPU-Leistung. ...und die Grafikkarte.... ....naja.. da male ich doch lieber selber.
- Wohnort: nahe Wolfsburg
Re: CPU-Auslastung auslesen
.....9 Jahre später....
Hi Leute,
ich versuche nun auch seit vielen Stunden irgendwie die CPU-Auslastung auszulesen.
Gibt es ggf. eine aktuelle Lösung für PureBasic 5.21, bzw hatte jemand schon mal dieses Problem ?
lg
SBond
Hi Leute,
ich versuche nun auch seit vielen Stunden irgendwie die CPU-Auslastung auszulesen.
Gibt es ggf. eine aktuelle Lösung für PureBasic 5.21, bzw hatte jemand schon mal dieses Problem ?
lg
SBond
41 6c 73 6f 20 77 65 6e 6e 20 64 75 20 73 6f 20 76 69 65 6c 20 4c 61 6e 67 65 77 65 69 6c 65 20 68 61 73 74 2c 20 64 61 6e 6e 20 6b 61 6e 6e 73 74 20 64 75 20 61 75 63 68 20 67 6c 65 69 63 68 20 7a 75 20 6d 69 72 20 6b 6f 6d 6d 65 6e 20 75 6e 64 20 61 62 77 61 73 63 68 65 6e 2e
Re: CPU-Auslastung auslesen
Es gibt hier im Forum von Helle irgendwo einen Thread mit Beispiel für das Auslesen der Last von einzelnen CPU Kernen.
Ich hatte grade gestern sowas gebraucht für ein G19 Applet.
Ah da haben wir es ja : http://purebasic.fr/german/viewtopic.ph ... e&start=40
Ich hatte grade gestern sowas gebraucht für ein G19 Applet.
Ah da haben wir es ja : http://purebasic.fr/german/viewtopic.ph ... e&start=40
PureBasic 6.04 LTS (Windows x86/x64) | Windows10 Pro x64 | Asus TUF X570 Gaming Plus | R9 5900X | 64GB RAM | GeForce RTX 3080 TI iChill X4 | HAF XF Evo | build by vannicom
-
- Beiträge: 266
- Registriert: 22.05.2013 20:35
- Computerausstattung: armseliger Laptop, mit wenig RAM und noch weniger CPU-Leistung. ...und die Grafikkarte.... ....naja.. da male ich doch lieber selber.
- Wohnort: nahe Wolfsburg
Re: CPU-Auslastung auslesen
super
vielen Dank!
Der Code von Helles war schon ein guter Ansatz.
Ich habe den Code aktualisiert, damit er auch mit Unicode kompatibel ist.
--> für Windows 2000 oder höher (x86, x64, ASCII und Unicode)
ich bin kein Profi, daher gibt es bestimmt noch Verbesserungspotential.
lg
SBond
vielen Dank!
Der Code von Helles war schon ein guter Ansatz.
Ich habe den Code aktualisiert, damit er auch mit Unicode kompatibel ist.
--> für Windows 2000 oder höher (x86, x64, ASCII und Unicode)
Code: Alles auswählen
Prototype.l ProtoOpenQuery (Para1.l, Para2.l, Para3.l)
Prototype.l ProtoCloseQuery (Para1.l)
Prototype.l ProtoCollectData (Para1.l)
Prototype.d ProtoAuslastung (Para1.l, Para2.l) ;hier wegen Double wirklich notwendig
Prototype.l ProtoAddCounter (Para1.l, Para2.l, Para3.l)
#CPU_CORES = 64
Dim CPU_Last.d(#CPU_CORES)
Procedure CPU_Auslastung (*Delay)
Shared CPU_Last()
If OpenLibrary(0, "PDH.DLL") ; MS-File in \System32
Global SI.SYSTEM_INFO
#PDH_CSTATUS_NEW_DATA = $1
Core = AllocateMemory(64) ; für max. 4 Cores, 0-15=Counter, 16-31=PdhStatus, 32-63=dblValue oder Structure
OpenQuery.ProtoOpenQuery = GetFunction(0, "PdhOpenQuery")
CloseQuery.ProtoCloseQuery = GetFunction(0, "PdhCloseQuery")
CollectData.ProtoCollectData = GetFunction(0, "PdhCollectQueryData")
AddCounter.ProtoAddCounter = GetFunction(0, "PdhVbAddCounter")
Auslastung.ProtoAuslastung = GetFunction(0, "PdhVbGetDoubleCounterValue")
RetVal = OpenQuery(0, 1, @hQuery)
If RetVal
MessageRequester("Fehler !", "Aufruf von PdhOpenQuery fehlgeschlagen!")
End
EndIf
GetSystemInfo_(@SI) ; Anzahl der Cores ermitteln
CPU_Last(0) = SI\dwNumberOfProcessors ; ins Array speichern
For i = 1 To SI\dwNumberOfProcessors
Proz$ = "\Prozessor(" + Str(i-1) + ")\Prozessorzeit (%)"
; konvertiert Proz$ in das ASCII-Format
ASCII_String = AllocateMemory(Len(Proz$) + 1)
PokeS(ASCII_String, Proz$, -1, #PB_Ascii)
RetVal = AddCounter(hQuery, ASCII_String, Core + ((i-1) << 2))
If RetVal
MessageRequester("Fehler !", "Aufruf von PdhVbAddCounter für Core"+ Str(i-1) + " fehlgeschlagen!")
EndIf
Next
Repeat
CollectData(hQuery)
For i = 1 To SI\dwNumberOfProcessors
CoreLast.d = Auslastung(PeekL(Core + 4 * (i-1)), Core + 16 + ((i-1) << 2))
If PeekL(Core + 16 + ((i-1) << 2)) > #PDH_CSTATUS_NEW_DATA
Break
Else
CPU_Last(i) = CoreLast
EndIf
Next
Delay (*Delay)
ForEver
CloseQuery(@hQuery)
CloseLibrary(0)
EndIf
EndProcedure
CreateThread(@CPU_Auslastung(), 500)
Repeat
Ausgabe$ = ""
For i = 1 To CPU_Last(0)
Ausgabe$ + "Kern " + Str(i) + ": " + StrD(CPU_Last(i),2) + "%" + #TAB$
Next
Debug Ausgabe$
Delay (500)
ForEver
lg
SBond
41 6c 73 6f 20 77 65 6e 6e 20 64 75 20 73 6f 20 76 69 65 6c 20 4c 61 6e 67 65 77 65 69 6c 65 20 68 61 73 74 2c 20 64 61 6e 6e 20 6b 61 6e 6e 73 74 20 64 75 20 61 75 63 68 20 67 6c 65 69 63 68 20 7a 75 20 6d 69 72 20 6b 6f 6d 6d 65 6e 20 75 6e 64 20 61 62 77 61 73 63 68 65 6e 2e
Re: CPU-Auslastung auslesen
Hallo zusammen!
Manche Sachen braucht man immer wieder
Der Code von SBond funktioniert auch mit PB 5.60 (x86) und Win10 (x64) wunderbar. Was muß da alles angepaßt werden, damit es für mehr als 4 Cores läuft? Mein schöner neuer AMD mit 8 Kernen und damit 16 Threads soll ja glänzen
Danke für Eure Mühe
Gruß
Gorden
Manche Sachen braucht man immer wieder
Der Code von SBond funktioniert auch mit PB 5.60 (x86) und Win10 (x64) wunderbar. Was muß da alles angepaßt werden, damit es für mehr als 4 Cores läuft? Mein schöner neuer AMD mit 8 Kernen und damit 16 Threads soll ja glänzen
Danke für Eure Mühe
Gruß
Gorden
Nichts wissen macht nichts. Man muß nur wissen, wo es steht, oder wen man fragen kann . . .