Prozesspriorität unter Windows?

„Prozesspriorität“. Dieser Begriff ist für mich seit Anbeginn meiner Windows Zeit ein Rätsel.
Im Taskmanager kann man diese Priorität einstellen.
Jedoch, was macht sie genau? Macht die Einstellung überhaupt etwas?

Ich habe mir einen kleinen Test erlaubt. In Photoshop habe ich 3 Tests laufen lassen, jeweils mit Photoshop mit „Echtzeit“- und „Niedrig“-Priorität, jeweils 3 Messungen gemacht und einen Durchschnitt der Dauer berechnet. Neben den Photoshop Tests liefen Medien im KMPlayer und WinRAR entpackte ein riesiges Archiv, um Photoshop die Möglichkeit zu geben mit einer hohen Priorität tatsächlich andere Prozesse „wegzustoßen“.

Details:
Photoshop -> ich erstelle ein leeres 400cm x 400cm 16bit Bild, ungefähre Größe: 735MB.

TestEchtzeitNiedrig
Test 1: Bild füllen mit weißer Farbe 2,4s 2,5s
Test 2: Schwarz-Weiß-Verlauf von oben nach unten 2,6s 2,8s
Test 3: Schwarfzeichnungsfilter -> Konturen scharfzeichnen 8,7s 8,8s

Was macht diese Einstellung nun? Weiß es jemand?
Oder ist es vielleicht wie die Defragmentierung bei WinXP/Win7; früher musste man defragmentieren, Windows 7 macht es von allein.

1 Kommentar

  1. Die Prozesspriorität hat etwas mit dem Process Scheduling des Systems zu tun. IMHO hat Microsoft hierzu eine relativ ausführliche Infoseite erstellt, die das Thema näher erläutert.

    Die grobe Theorie: Die Systeme von heute sind dazu gezwungen, mehrere Aufgaben gleichzeitig auszuführen (Multithreading). Früher war es einfacher – man hat ein Programm gestartet, es benutzt, irgendwann beendet und ein anderes Programm gestartet, um es zu nutzen.

    Heute guckt man im Mediaplayer eine DVD, hat nebenbei noch ein Chatfenster offen und lässt parallel noch die Festplatte defragmentieren. Und das, obwohl man weniger Prozessoren hat, als Prozesse gleichzeitig laufen.

    Das erreicht man, indem die Prozesse nicht wirklich gleichzeitig laufen, sondern jeder Prozess in bestimmten Abständen die CPU zur vollen Verfügung erhält. Sprich: Mal darf Prozess A ein paar Millisekunden arbeiten, dann Prozess B, dann Process C und so weiter. Irgendwann ist Prozess A wieder dran und darf weiter machen.

    Das ganze bezeichnet man als Scheduling. Für das Scheduling gibt es verschiedene Verfahren, um die CPU möglichst optimal aufzuteilen. Bei Windows kommt z.B. ein preemptive Scheduling zum Einsatz – sprich: Das Betriebssystem wacht darüber, dass ein Prozess wirklich nur einen bestimmten Teil der Ressourcen in Anspruch nimmt. Beim non-preemptive Scheduling würde das System einfach so lange warten, bis der Prozess mit seiner Abarbeitung fertig ist.

    Jetzt zu deiner Prozesspriorität: Wie man bei Microsoft nachlesen kann, gibt es in Windows nicht nur eine Abarbeitungsliste (Queue), sondern mehrere. Je nachdem, wie „wichtig“ der Prozess ist, befindet er sich in einer Queue mit höherer oder niedriger Priorität. Prozesse mit hoher Priorität werden eher mit Betriebsressourcen versorgt als Prozesse mit niedriger Priorität.

    Leider muss ich sagen, dass dein gewähltes Beispiel eher schlecht ist, um den Einfluss der Prozesspriorität zu zeigen. Die von dir gemachten Bildbearbeitung sind zwar sehr speicherintensiv, aber nicht sonderlich rechenintensiv. Zudem könntest du das Pech haben, dass Photoshop die Ausführung von Aufgaben in separaten Threads ausführt, deren Priorität du evtl. nicht geändert hast.

    Eine Möglichkeit wäre, dass du deine Vergleiche z.B. auf das Kompressionsprogramm konzentrierst und dir anguckst, wie sich dort die unterschliedlichen Prozessprioritäten auswirken. Dir sollte zudem bewusst sein, dass dies bei Mehrkernprozessoren nicht mehr so eine große Auswirkung hat. 😉

Schreibe einen Kommentar