bugx
Goto Top

Programm auf Unterschreitung der CPU-Auslastung überprüfen

Hallo zusammen.

Ich möchte gerne auf einem PC mit Win XP Pro SP 2 ein Programm auf die Unterschreitung einer "Mindest"-CPU-Auslastung kontrollieren. Es hört sich
komisch an, hat aber einen nützlichen Hintergrund.

Wir haben in der Firma eine vollautomatische Waage, bei der die Fahrer via Barcode-Scanner selber wiegen können. Das Programm fragt die Waage
dauernd auf Eingaben ab und läuft deshalb auf einer Dual-Core-CPU mit einer Auslastung zwischen 45% und 55%. Leider fällt das Programm hin und
wieder aus dem Vollautomatik-Modus raus und somit sind keine Eingaben der Fahrer mehr möglich. Der Bildschirm steht etwas abseits und somit fällt
das nicht sofort auf.
Nun bin ich auf der Suche nach einem Programm oder einem Skript das die CPU-Auslastung überprüft und unter einem bestimmten Wert via Ton-Ausgabe
Alarm schlägt.

Google war mir keine große Hilfe. Alle Programme die ich gefunden habe überprüfen die Anwendungen auf Überschreitung der CPU-Zeit.

Ich hoffe ihr könnt mir etwas unter die Arme greifen.

Viele Grüße

Hans

Content-Key: 116984

Url: https://administrator.de/contentid/116984

Ausgedruckt am: 28.03.2024 um 16:03 Uhr

Mitglied: 77559
77559 28.05.2009 um 09:04:51 Uhr
Goto Top
Zitat von @bugx:
Google war mir keine große Hilfe. Alle Programme die ich
gefunden habe überprüfen die Anwendungen auf
Überschreitung der CPU-Zeit.

Bei einem Script oder Batch bestimmst du selbst was passieren soll.

Ich hoffe ihr könnt mir etwas unter die Arme greifen.

Schau dir mal diesen Beitrag an CPU Auslastung per Skript abfragen

Was willst du denn machen Programm neu starten Alarm-Sound abspielen etc?

Gruß
LotPings
Mitglied: bugx
bugx 28.05.2009 um 09:20:30 Uhr
Goto Top
Hallo LotPings.

Mit meinen eigenen Programmier-Kenntnissen ist es leider nicht so weit her.

Ich habe das Skript getestet. Es fragt aber anscheinend nur die komplette Auslastung der Prozessoren ab. Ich brauche aber die Last einer bestimmten exe-Datei.

Es soll solange ein Alarm-Ton ausgeben werden bis die Last wieder im "normalen" Bereich ist.

Gruß

Hans
Mitglied: 77559
77559 28.05.2009 um 10:07:08 Uhr
Goto Top
Tja ich bin nicht sicher ob das überhaupt mit einem Programm zuverlässig funktionieren kann. Die Messung erfolgt ja immer an diskreten Zeitpunkten.

Probiere mal dieses Script aus, mit firefox als anwendung kriege ich hier nachvollziehbare Werte.
Ändere in Zeile 6 firefox in deinen Process Namen wie im TaskMgr angezeigt.

 'Get % Processor Time for a process  
'Connect to Local Machine  
set wmi_service = GetObject("winmgmts:{impersonationlevel=impersonate}!\root\cimv2")  

sObjectPath = "Win32_PerfRawData_PerfProc_Process.Name="  & chr(34) & _  
 "firefox" & chr(34)  
wscript.echo sObjectPath

set perf_instance1 = wmi_service.get( sObjectPath )
N1 = perf_instance1.PercentProcessorTime
D1 = perf_instance1.TimeStamp_Sys100NS

while true
  ' 1 Sekunde Pause = 1000 ms  
  wscript.sleep(1000)

  set perf_instance2 = wmi_service.get( sObjectPath )
  N2 = perf_instance2.PercentProcessorTime
  D2 = perf_instance2.TimeStamp_Sys100NS
  if ( 0 = (D2-D1) ) then
    wscript.echo "divide by zero"  
  else
    PercentProcessorTime = ((N2 - N1) / (D2 - D1)) * 100
    wscript.echo "% Processor Time = " , PercentProcessorTime  
  end if

  N1 = N2
  D1 = D2
wend

set wmi_service = nothing

Wenn da einigermaßen konstante Werte rauskommen kann man darauf aufbauen.

Gruß
LotPings
Mitglied: bugx
bugx 28.05.2009 um 10:50:59 Uhr
Goto Top
Die Werte sehen recht gut aus. Der Unterschied bei den Werten liegt zwischen 1% und 3%.

Der Zeitpunkt der Messung ist eher zweitrangig. Wenn 30 Sekunden dazwischen liegen ist es auch kein Problem. Zur Zeit kann es auch mal 1 Stunde dauern bis es auffällt.

Gruß

Hans