Priorität in Windows ist alles

Der ein oder andere kennt das Szenario bei einem Windows System.
Wir haben mehrere geplante Tasks auf einem Server laufen, und wir wundern uns, warum die Laufzeiten recht lange sind.

Auch wir hatten neulich wieder das Problem, das ein Robocopy Job zum Spiegeln eines Verzeichnisses mehrere Tage benötigte, um seine Aufgabe fertig abzuschließen. Hier fehlte einfach die Möglichkeit die geplante Aufgaben zu priorisieren.

Der Robocopy Job wurde mittels Task Planer(Aufgabenplanung) an einem Windows Server 2008 R2 eingerichtet. Gespiegelt wurde von einem eingebundenen NAS Storage zu einem anderen.

Zusätzlich lief im Hintergrund noch eine Indizierungssoftware eines Drittherstellers.

Aufgaben Priorisieren Windows
Der Windows Task Planer kann in der GUI vieles, aber nicht alles!

Der Robocopy Job sollte aufgrund der geänderten Datenmenge eigentlich nicht lange dauern.

Eine genauere Überprüfung ergab, dass der Robocopy Task im Taskmanager als niedrig Priorisiert war.

Windows scheint dies Standardmäßig bei geplanten Tasks zu hinterlegen.
Mir war dies nicht wirklich bewusst.

Aber wie ändern wir die Priorität eines geplanten Tasks nun?
In der GUI war hierzu keine Einstellmöglichkeit gegeben.

Geplante Aufgaben Priorisieren – So geht es!

Man Exportiert den geplanten Job und öffnet diese Export-datei mit einem Editor.
In dieser XML Datei findet man nun den Priority Key Eintrag mit dem Wert 7.
Ein Blick auf folgende Tabelle ergibt, dass der Task immer unterhalb der normalen Priorität gestartet wird.

Task priorityPriority ClassPriority Level
0REALTIME_PRIORITY_CLASSTHREAD_PRIORITY_TIME_CRITICAL
1HIGH_PRIORITY_CLASSTHREAD_PRIORITY_HIGHEST
2ABOVE_NORMAL_PRIORITY_CLASSTHREAD_PRIORITY_ABOVE_NORMAL
3ABOVE_NORMAL_PRIORITY_CLASSTHREAD_PRIORITY_ABOVE_NORMAL
4NORMAL_PRIORITY_CLASSTHREAD_PRIORITY_NORMAL
5NORMAL_PRIORITY_CLASSTHREAD_PRIORITY_NORMAL
6NORMAL_PRIORITY_CLASSTHREAD_PRIORITY_NORMAL
7BELOW_NORMAL_PRIORITY_CLASSTHREAD_PRIORITY_BELOW_NORMAL
8BELOW_NORMAL_PRIORITY_CLASSTHREAD_PRIORITY_BELOW_NORMAL
9IDLE_PRIORITY_CLASSTHREAD_PRIORITY_LOWEST
10IDLE_PRIORITY_CLASSTHREAD_PRIORITY_IDLE

Quelle: Microsoft MSDN

Damit der Task nun mit normaler oder höherer Priorität startet, einfach den Wert in der XML Datei ändern.
Danach die XML in der Aufgabenplanung wieder Importieren.

Eine Messung hat bei uns ergeben, dass sich unser Robocopy Job, der zuvor zwischen 3 und 4 Tagen lief, nun innerhalb 2 Stunden fertig war.

Warum Microsoft es bis heute nicht geschafft hat, einen einfachen Schalter in der GUI zu hinterlegen, um geplante Aufgaben zu priorisieren, ist mir ein Rätsel.