VBA - CPU Last gesamt ermitteln
Guten Abend,
ich versuche, per VBA die Gesamtlast aller CPUs auf einem Host auszulesen.
Hintergrund ist daß User öfters mal über Hänger oder sonstige Zustände klagen, und ich hab der Applikation über VBA einen Button spendiert, der ein paar grundlegende Fakten einsammelt und in eine Logdatei schreibt.
- Anzahl der Instanzen des PRogrammes
- eine For-Schleife die in ca. 4 Sekunden fertig sein sollte
- eine handvoll applikationsspezifsche Tests
und zuguterletzt wollte ich die vor dem Test schon vorhandene CPU-Last ermitteln.
das was hier angezeigt wird im Windows 11 Taskmanager
sollte auch in eine Logdatei kommen... nur liefern die ganzen Skriptbeispiele alles mögliche, nur nicht die Gesamtlast
Ich hab mal mit 7zip eine große Datei eingepackt unter Nutzung aller Threads.... 100% im Taskmanager, aber eher 60 im Skript
ES wird zwar eine Collection geliefert, 12 CPUs und _total aber das stimmt vorne und hinten nicht...
a) _total stimmt nicht
b) die Einzellasten der CPUs summiert und durch die Anzahl geteilt... ebenso nicht.
Kennt jemand eine bessere Lösung?
Quelle
https://www.techrepublic.com/forums/discussions/cpu-utilization-script/
das Original filtert nach "_TOTAL" , ich hab mal nach NOT _TOTAL umgestellt, weil ich mir dachte, daß man vielleicht über die Summe der einzelnen CPU-Infos zur Gesamtlast kommt, stimmt aber nicht.
ich versuche, per VBA die Gesamtlast aller CPUs auf einem Host auszulesen.
Hintergrund ist daß User öfters mal über Hänger oder sonstige Zustände klagen, und ich hab der Applikation über VBA einen Button spendiert, der ein paar grundlegende Fakten einsammelt und in eine Logdatei schreibt.
- Anzahl der Instanzen des PRogrammes
- eine For-Schleife die in ca. 4 Sekunden fertig sein sollte
- eine handvoll applikationsspezifsche Tests
und zuguterletzt wollte ich die vor dem Test schon vorhandene CPU-Last ermitteln.
das was hier angezeigt wird im Windows 11 Taskmanager
sollte auch in eine Logdatei kommen... nur liefern die ganzen Skriptbeispiele alles mögliche, nur nicht die Gesamtlast
Ich hab mal mit 7zip eine große Datei eingepackt unter Nutzung aller Threads.... 100% im Taskmanager, aber eher 60 im Skript
ES wird zwar eine Collection geliefert, 12 CPUs und _total aber das stimmt vorne und hinten nicht...
a) _total stimmt nicht
b) die Einzellasten der CPUs summiert und durch die Anzahl geteilt... ebenso nicht.
Kennt jemand eine bessere Lösung?
Quelle
https://www.techrepublic.com/forums/discussions/cpu-utilization-script/
das Original filtert nach "_TOTAL" , ich hab mal nach NOT _TOTAL umgestellt, weil ich mir dachte, daß man vielleicht über die Summe der einzelnen CPU-Infos zur Gesamtlast kommt, stimmt aber nicht.
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
set objRefresher = CreateObject("WbemScripting.Swbemrefresher")
Set objProcessor = objRefresher.AddEnum _
(objWMIService, "Win32_PerfFormattedData_PerfOS_Processor").objectSet
objRefresher.Refresh
cpuload=0
Output ObjProcessor.count
For Each intProcessorUse In objProcessor
If Not intProcessorUse.Name = "_Total" Then
Output FormatDateTime(Now,vbShortDate) & vbTab & _
FormatDateTime(Now,vbShortTime) & vbTab & _
intProcessorUse.PercentProcessorTime & " " & intProcessorUse.Name
cpuload=cpuload+intProcessorUse.PercentProcessorTime
End If
Next
Output "Total load estimation " & int(cpuload/objProcessor.count)
objRefresher.Refresh
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 91777971447
Url: https://administrator.de/contentid/91777971447
Ausgedruckt am: 23.11.2024 um 10:11 Uhr
2 Kommentare
Neuester Kommentar