Mehrkern CPU Auslastung erkennen und verarbeiten
Hallo an alle Mitglieder,
ich habe ein kleines Problem und zwar soll ich eine kleine Batch-Datei schreiben, die bestimmtes Servermonitoring betreibt.
Das klappt soweit ganz gut, nur habe ich jetzt noch Probleme bei der Erkennung der CPU Auslastung bei Mehrkern CPUs.
Gibt es irgendwelche Möglichkeiten die Auslastung der einzelnen Kerne auszulesen, sodass man diese am Ende in einer bat verarbeiten kann?
mfg Alucard7
ich habe ein kleines Problem und zwar soll ich eine kleine Batch-Datei schreiben, die bestimmtes Servermonitoring betreibt.
Das klappt soweit ganz gut, nur habe ich jetzt noch Probleme bei der Erkennung der CPU Auslastung bei Mehrkern CPUs.
Gibt es irgendwelche Möglichkeiten die Auslastung der einzelnen Kerne auszulesen, sodass man diese am Ende in einer bat verarbeiten kann?
mfg Alucard7
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 161677
Url: https://administrator.de/forum/mehrkern-cpu-auslastung-erkennen-und-verarbeiten-161677.html
Ausgedruckt am: 14.05.2025 um 19:05 Uhr
4 Kommentare
Neuester Kommentar
Möglichkeiten gibts fast immer, Frage ist nur der Aufwand es zu realisieren
Das Zauberwort hier heißt WMI (=Windows Management Instrumentation).
Die WMI Klasse für den Prozessor: Win32_PerfFormattedData_PerfOS_Processor
Doku bei MS: http://msdn.microsoft.com/en-us/library/aa394271(v=vs.85).aspx
Integration in Batch dürfte über WMIC.exe gehen, ich benutze für sowas immer den Windows Scrpting Host.
Wie es im WSH aussieht, sieht man am einfachsten, indem man die Scriptomatic von MS benutzt: http://www.microsoft.com/germany/technet/datenbank/articles/600322.mspx
Download der Scriptomatic: http://www.microsoft.com/downloads/en/details.aspx?FamilyID=09dfc342-64 ...
Das Zauberwort hier heißt WMI (=Windows Management Instrumentation).
Die WMI Klasse für den Prozessor: Win32_PerfFormattedData_PerfOS_Processor
Doku bei MS: http://msdn.microsoft.com/en-us/library/aa394271(v=vs.85).aspx
Integration in Batch dürfte über WMIC.exe gehen, ich benutze für sowas immer den Windows Scrpting Host.
Wie es im WSH aussieht, sieht man am einfachsten, indem man die Scriptomatic von MS benutzt: http://www.microsoft.com/germany/technet/datenbank/articles/600322.mspx
Download der Scriptomatic: http://www.microsoft.com/downloads/en/details.aspx?FamilyID=09dfc342-64 ...
Beispiel aus der Scriptomatic (leicht abgewandelt):
Das ergibt bei mir als Ausgabe:
Computer: .
Name: 0
PercentIdleTime: 33
PercentInterruptTime: 0
PercentPrivilegedTime: 0
PercentProcessorTime: 66
PercentUserTime: 63
*
Name: 1
PercentIdleTime: 63
PercentInterruptTime: 0
PercentPrivilegedTime: 0
PercentProcessorTime: 36
PercentUserTime: 33
*
Name: _Total
PercentIdleTime: 0
PercentInterruptTime: 0
PercentPrivilegedTime: 0
PercentProcessorTime: 51
PercentUserTime: 48
*
Name ist die Instanz wie im PerfMon ausgewählt (0,1 und _Total)
Wie man bei PercentProcessorTime sieht, ist der Eine zu 36, der Andere zu 66 Prozent ausgelastet, in der Summe das System zu 51 Prozent.
Ist doch das, was Du haben willst, oder nicht?
Und laut http://www.microsoft.com/germany/technet/datenbank/articles/600682.mspx ist WMI auch bei Win2000 dabei.
On Error Resume Next
Const wbemFlagReturnImmediately = &h10
Const wbemFlagForwardOnly = &h20
' Hier die abzufragenden Computer eintragen . ist der lokale
arrComputers = Array(".")
For Each strComputer In arrComputers
WScript.Echo
WScript.Echo "=========================================="
WScript.Echo "Computer: " & strComputer
WScript.Echo "=========================================="
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_PerfFormattedData_PerfOS_Processor", "WQL", _
wbemFlagReturnImmediately + wbemFlagForwardOnly)
For Each objItem In colItems
WScript.Echo "Name: " & objItem.Name
WScript.Echo "PercentIdleTime: " & objItem.PercentIdleTime
WScript.Echo "PercentInterruptTime: " & objItem.PercentInterruptTime
WScript.Echo "PercentPrivilegedTime: " & objItem.PercentPrivilegedTime
WScript.Echo "PercentProcessorTime: " & objItem.PercentProcessorTime
WScript.Echo "PercentUserTime: " & objItem.PercentUserTime
WScript.Echo "*****************************************************"
Next
Next
Das ergibt bei mir als Ausgabe:
Computer: .
Name: 0
PercentIdleTime: 33
PercentInterruptTime: 0
PercentPrivilegedTime: 0
PercentProcessorTime: 66
PercentUserTime: 63
*
Name: 1
PercentIdleTime: 63
PercentInterruptTime: 0
PercentPrivilegedTime: 0
PercentProcessorTime: 36
PercentUserTime: 33
*
Name: _Total
PercentIdleTime: 0
PercentInterruptTime: 0
PercentPrivilegedTime: 0
PercentProcessorTime: 51
PercentUserTime: 48
*
Name ist die Instanz wie im PerfMon ausgewählt (0,1 und _Total)
Wie man bei PercentProcessorTime sieht, ist der Eine zu 36, der Andere zu 66 Prozent ausgelastet, in der Summe das System zu 51 Prozent.
Ist doch das, was Du haben willst, oder nicht?
Und laut http://www.microsoft.com/germany/technet/datenbank/articles/600682.mspx ist WMI auch bei Win2000 dabei.