Prioritet i Windows Aktivitetsschemaläggare

Den som kör jobb i Windows Task Scheduler kommer förr eller senare att stöta på oförklarliga skillnader i körtid. Ett PHP-skript som körs på 5 minuter på kommandoraden tar plötsligt 20 minuter när det körs via Windows Task Scheduler. Samma användare, samma behörigheter, samma kod – fyra gånger så lång körtid. Vad var det som pågick?


Efter timmar av felsökning, Process Monitor-sessioner och otaliga konfigurationsjämförelser var lösningen skrämmande enkel: Windows Task Scheduler ställer in en lägre processprioritet som standard. Standardvärdet för uppgifter i Task Scheduler är 7 (Under normalt), inte 4-6 (Normalt) som förväntat. Denna till synes lilla skillnad kan leda till massiv prestandaförsämring i I/O-intensiva operationer.

Windows prioritetsnivåer i detalj är:

VärdePrioritetBeskrivning
0RealtidHögsta prioritet (varning!)
1HögHög prioritet
2-3Över normaltOm Normal
4-6NormalStandard för interaktiva processer
7Under det normalaSTANDARD i Aktivitetsschemaläggaren
8-9Under det normalaÄnnu lägre
10På tomgångLägsta prioritet

Problemet med prioritering i uppgiftsschemaläggning är flerskiktat: När du exporterar en uppgift och tittar på XML-filen kommer du ofta att inga Prioritetsinställning. Windows använder sedan standardvärdet i tysthet. 7. Det grafiska gränssnittet visar detta värde under exporten, men det lagras inte explicit i uppgiften. Den lägre prioriteten resulterar inte bara i mindre CPU-tid, utan också:

  • Begränsade disk-I/O-operationer
  • Lägre nätverksprioritet
  • Dålig cachning av filsystemet
  • Förseningar i databasåtkomst

Även om du använder samma användare och aktiverar "Kör med högsta behörighet" körs uppgiften i en annan Windows-stations-/skrivbordsmiljö med andra prioriteter. För att identifiera problemet kan du använda PowerShell för att lista alla uppgifter med deras faktiska prioriteter.:

38b7fa6c77dc344401485cd338ea4128

Nästan alla mina uppgifter kördes med prioritet 7. Vi korrigerar nu specifikt prioriteten för flera uppgifter samtidigt:

38b7fa6c77dc344401485cd338ea4128

Efter att ha prioriterat 4 (Normalt) kördes mitt PHP-skript igen inom de förväntade 300 sekunderna. Om du har konfigurerat uppgifter med ett specifikt användarkonto kan du också enkelt ange detta på rad 10 enligt följande.:

38b7fa6c77dc344401485cd338ea4128

Tillbaka