Prioritet i Windows Opgaveplanlægger

Enhver, der kører job i Windows opgaveplanlægning, vil før eller siden støde på uforklarlige forskelle i kørselstid. Et PHP-script, der kører på 5 minutter på kommandolinjen, tager pludselig 20 minutter, når det køres via Windows Task Scheduler. Samme bruger, samme rettigheder, samme kode – fire gange udførelsestiden. Hvad foregik der?


Efter timer Debugging, Procesmonitorsessioner og utallige konfigurationssammenligninger, løsningen var chokerende enkel: Windows opgaveplanlægning sætter en lavere procesprioritet som standard. Standardværdien for opgaver i Task Scheduler er 7 (Under normal), ikke 4-6 (Normal), som du ville forvente. Denne tilsyneladende lille forskel kan føre til massive ydeevnetab i I/O-intensive operationer.

Windows-prioritetsniveauerne er i detaljer:

VærdiPrioritetBeskrivelse
0RealtidHøjeste prioritet (forsigtig!)
1HøjHøj prioritet
2-3Over normalOm Normal
4-6NormalStandard for interaktive processer
7Under normalenSTANDARD i Opgaveplanlægger
8-9Under normalenEndnu lavere
10LedigLaveste prioritet

Problemet med prioritering i opgaveplanlægning er mangesidet: Når du eksporterer en opgave og ser på XML-filen, vil du ofte finde ingen Prioritetsindstilling. Windows vil derefter lydløst bruge standardværdien 7. Den grafiske brugergrænseflade viser denne værdi under eksport, men den gemmes ikke eksplicit i opgaven. Den lavere prioritet resulterer ikke kun i mindre CPU-tid, men også:

  • Begrænsede disk I/O-operationer
  • Lavere netværksprioritet
  • Dårlig caching af filsystemet
  • Forsinkelser i databaseadgang

Selv hvis du bruger den samme bruger og aktiverer "Kør med højeste rettigheder", kører opgaven i et andet Windows-stations-/skrivebordsmiljø med andre prioriteter. For at identificere problemet kan du bruge PowerShell til at liste alle opgaver med deres faktiske prioriteter.:

38b7fa6c77dc344401485cd338ea4128

Næsten alle mine opgaver blev prioriteret 7. Vi korrigerer nu specifikt prioriteten for flere opgaver på én gang:

38b7fa6c77dc344401485cd338ea4128

Efter at have indstillet prioriteten til 4 Mit PHP-script kørte (normalt) igen inden for de forventede 300 sekunder. Hvis du har konfigureret opgaver med en specifik brugerkonto, kan du blot indtaste denne i linje 10 som følger:

38b7fa6c77dc344401485cd338ea4128

Tilbage