Multi-CPU Unterstützung im AutoMATE: CPU Management

theogott
Beiträge: 15
Registriert: So Feb 27, 2011 3:29 pm

Multi-CPU Unterstützung im AutoMATE: CPU Management

Beitragvon theogott » Mo Apr 18, 2011 4:46 pm

Fast alle CPU's kommen heutzutage mit mehreren CPU Kernen daher.
Die neueren haben 4-8 Kerne und vielleicht sogar noch Hypethreading.

Läßt man Windows dabei freien Lauf, kann es vorkommen, dass man die Power der CPU nur teilweise ausschöpft.

So wird eine Applikation die vier Kerne bedient mit vier "echten Kernen" deutlich besser laufen, als wenn sie dann zwei echte Kerne und zwei "Hyperthreads" erwischt.

Ein anderes Beispiel wo man die Kerne zuweisen möchte sind, zeitkritischen Anwendungen, die von sich aus nur Single-threaded sind (also auf einem CPU Kern laufen).

Solche Anwendungen sind zum Beispiel Echtzeit-Maschinensteuerungen (Beckhoff), wo es darum geht, dass der Echtzeitkern möglichst "Im Cache" einer CPU bleibt und regelmäßig seine Rechenzeit-Quantums vom OS bekommt.

Die Isolation des Beckhoff-Systems auf eine CPU verbessert die Stabilität des Gesamtsystems, wenn auf dem gleichen PC noch eine andere CPU-intensive Anwendung wie zum Beispiel eine Bildverarbeitung läuft.

Auf der Seite haushaltsüblicher Anwendungen gehören dazu aber genauso auch Spielprogramme, wo es einfach nur um jeden Frame geht und um flüssiges Spielen.

Isoliert man das Spiel auf einen Kern, dann verwenden alle Windows-Programme, Anti-Virus, Firewall etc. den anderen Kern.

Dadurch kann das Spielprogramm zumeist im Cache der CPU verbleiben, was auch hier für flüssiges Spielen und für einen Stabilitätsgewinn sorgt.

Aktuell sind MultiCore CPU's defacto Marktstandard. Daher hat ACMP AutoMATE nun auch Befehle zum Zuweisen von Programmen an einzelne CPU-Kerne.

Und auch einen Befehl, um abzufragen, wie die aktuelle Zuweisung ist.

In Verbindung mit dem Befehl FEP\ und IEP\ kann man damit nun auch Programme auf einen Kern isolieren, was bei besagten Anwendungen zu einem Stabilitäts- und oft auch Performancegewinn führt.

Man könnte dafür auch extra Tools kaufen, die nichts anderes tun.
Wobei es im AutoMATE als Befehl schon eingebaut ist. Also in zwei der 800 Befehlen.

Code: Alles auswählen

"PAG\[Daten]" für "ProcessAffinityGet", "PAS\[Daten]" für "ProcessAffinitySet", "CPU\[Daten]" für "CPU-Usage".
Mit dem dritten Befehl, CPU\ , kann man die Auslastung des Systems ermitteln.

Beispielskript:

Code: Alles auswählen

SHK\3|27|1 '# Beenden mit Hotkey Shift+Escape FOR\$$iii|1|200 CPU\1 '# Prozessor/Kern 1 VAR\$$cu1=$v1$ CPU\2 '# Prozessor/Kern 2 VAR\$$cu2=$v1$ SBT\0|Kern 1: $$cu1$crlf$Kern 2: $$cu2# TDL\100 NXT\ @ '# Die Abfrage der CPU-Auslastung erfolgt alle $$int Sekunden. Wenn länger '# als $$dur min unter $$use %, Messagebox anzeigen zwecks Herunterfahren '# (bei Nichtbetätigung wird nach $$sec der Rechner heruntergefahren). '# Die Datei kann aus jeder Rem-Datei mit der Zeile '# LNR\cpu.rem*1,10,10,30 '# gestartet werden (die Zahlen sind Beispiele für individuelle Parameter; '# wenn keine übergeben werden, greifen die Defaultparameter) IEV\$$[X] '# Prüfen, ob Parameter übergeben wurden '# übergebene Parameter SBD\*$$[X]*,*1 VAR\$$int=$v1$ '# Abfrageintervall (sec) VAR\$$use=$v2$ '# Auslastung in % VAR\$$dur=$v3$ '# Zeit in min VAR\$$sec=$v4$ '# Wartezeit für AutoBox SBT\3|$$int,$$use,$$dur,$$sec# ELSE '# Default-Parameter VAR\$$int=5 '# Abfrageintervall (sec) VAR\$$use=5 '# Auslastung in % VAR\$$dur=5 '# Zeit in min VAR\$$sec=15 '# Warezeit für AutoBox EEV\ DTC\a|n|$$dur|$now$>$$aaa :neu CPU\ '# (durchschnittliche) Auslastung ermitteln 'SBT\2|$v1$ ISV\1<use>$$aaa ESV\ CAS\$$int GOTO neu @ :shutdown MBP\$$sec MBX\Computer herunterfahren?|36 IMB\7 '# Nein gedrückt DTC\a|n|$$dur|$now$>$$aaa GOTO neu EMB\ WSD\ '# Herunterfahren @
Theo Gottwald
Selbständiger IT-Berater

ACMP AutoMATE Professional
Let the Robots do it for you.

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste