CPU Resourcen optimieren mit PAS\ und PAG\

Moderator: MVogt

Post Reply
User avatar
Theo_Gottwald
Posts: 367
Joined: 03. Oct 2009, 08:57
Location: Herrenstr.11 * 76706 Dettenheim
Contact:

CPU Resourcen optimieren mit PAS\ und PAG\

Post by Theo_Gottwald » 21. Aug 2013, 08:41

Ein anderes Anwendungsgebiet für den MPR ist das Optimieren von CPU Resourcen.
Multi-CPU oder besser Multi-Core Systeme sind heute weit verbreitet.
Gleichzeitig nutzen auch bereits viele Programme die Möglichkeit nicht nur mit einer CPU zu "rechnen" sondern mit mehreren.
Diese Fähigkeit mehrere CPU's zu nutzen nennt man "multi threading".
Dabei startet das Programm intern kleine selbständige Unterprogramme, die das Betriebssystem dann auf andere CPU-Kerne legen kann.

Um zu sehen, wo man hier Resourcen optimieren kann, muß man wissen wie dieses Multi-CPU Processing intern funktioniert. Im Folgenden daher ein paar Hinweise dazu.

Das Betriebssystem hat eine Liste mit Prozessen und Diensten, diese kann man im Taskmanager sehen.
Jedem dieser Prozesse ist eine Priorität zugewiesen.

Und jeder Prozess und Dienst hat eine Liste mit CPU's die er nutzen darf. Das ist win wenig so wie "ein gemeinsame Bad". Die Prozesse teilen sich die CPU in dem jeder die CPU eine zeit lang nutzen darf.
Diese Liste, welche CPU's ein Prozess nutzen darf, kann man mit den Befehlen PAS\ und PAG\ einsehen und ändern.

Das Betriebssystem läßt nun einen Prozess eine bestimmte Zeit lang auf einem CPU-Kern laufen ("ein Zeit-Quantum").
Hier ist es im Kleinen ähnlich wie früher bei den Großrechnern, wo man sich eine bestimmte Rechenzeit mieten konnte.

Allerdings sind diese Zeitquanten relativ kurz, denn sonst würde auf einem Multitasking OS kein Gefühl des flüssigen Arbeitens aufkommen.

Hat ein Prozess sein "Quantum an Rechenzeit verbraucht" wird er vom OS veranlasst, dass seine CPU Register auf dem System-Stapel gesichert werden. Außerdem werden die Register des nachfolgenden Prozesses vom Systemstapel geladen und die Caches werden auf den neuen Prozess umgestellt. Diese Vorgänge sind durchaus nicht ganz umsonst.

Und genau hier setzt eine Optimierung an. Der MPR hat dazu die Befehle:
FEP\ [For each Process]
und
PAS\ [Process Affinity Set].


Die Optimierung kann zum Beispiel so erfolgen:
Mit diesen Befehlen kann man nun die ganzen Systemprozesse also - alles was so nebenher läuft - zum Beispiel auf CPU 0 zuweisen. Dort unterbrechen sich die "vielen Kleinen" dann in Ruhe gegenseitig, stören aber nicht unsere wichtigen Programme bei der Arbeit.
In der Folge unterbrechen diese vielen kleinen Prozesse andere wichtige Anwendungen nicht mehr. Und diese können so länger ungestört Ihre CPU und die Caches nutzen.

Durch die Skripting-Fähigkeiten des MPR kann man seine Festlegungen dann in eine EXE Datei kompilieren und einfach mit dem Autostart laufen lassen. So hat man dann die CPU\-Optimierung automatisch nach jedem Neustart.

Eine manuelle Möglichkeit auf x32 Systemen die CPU's zu optimieren ist der Windows Taskmanager.
Komfortabler ist
Mike Lin's SMP-Seesaw PRO.
HInweis: Funktioniert evtl. nicht richtig mit x64. Also die 32 bit Prozesse werden jedoch korrekt angezeigt.

User avatar
Theo_Gottwald
Posts: 367
Joined: 03. Oct 2009, 08:57
Location: Herrenstr.11 * 76706 Dettenheim
Contact:

Re: CPU Resourcen optimieren mit PAS\ und PAG\

Post by Theo_Gottwald » 25. Aug 2013, 20:10

Im Folgenden ein Beispielscript, dass alle erreichbaren Prozesse auf die CPU's 1+2 beschränkt.
Ausserdem liest das Script die CPU-Belegung der Prozess gleich danach aus und schreibt diese in eine Log-File.
So sieht man welche Prozesse erfasst wurden.
Um nun die CPU Resourcen zu optimieren würde man nun noch die "Hi-Prio" Prozesse auf alle übrigen CPU's zuweisen, oder wenn der Computer kaum manuelle benutzt wird, auf ALLE CPU's.

Hier noch der HInweis, dass zur optimalen Funktion der Befehle nächste Woche ein Update erfolgt (das ich hier bereits habe), wer diese Features also nutzen will sollte beim M42 Support nach dem aktuellsten MPR Update fragen, bei dem die "remote.exe" mindestens den Stand von (Siehe BIldanlage) hat.

Code: Select all

KRM\2
DED\1
VAR\$$CNT=0
VAR\$$FIL=?path\Done.txt
DEL\$$FIL

FEP\DoIt|$$PIN
SBT\2|Fertig
@

:DoIt
VIC\$$CNT
' PID ermitteln
VAR\$$PID=$fep_pid$
PAS\$$PID|1,2
PAG\$$PID>$$RES
VAR\$$TXT=$$CNT. $$PIN  PID:$$PID CPU:$$RES
ATF\$$FIL<$$TXT
@
Attachments
2013-08-25 20_07_42-Eigenschaften von remote.exe.png
DIes ist die version der "remote.exe" die für die CPU Optimierung benötigt wird.
(8.05 KiB) Downloaded 185 times

Post Reply

Return to “Package Robot”

Who is online

Users browsing this forum: No registered users and 8 guests