Prioriteit in Windows Taakplanner

Iedereen die taken uitvoert in de Windows Taakplanner, zal vroeg of laat onverklaarbare runtimeverschillen tegenkomen. Een PHP-script dat op de opdrachtregel in 5 minuten wordt uitgevoerd, duurt plotseling 20 minuten wanneer het via de Windows Taakplanner wordt uitgevoerd. Dezelfde gebruiker, dezelfde rechten, dezelfde code – vier keer de uitvoeringstijd. Wat was er aan de hand?


Na urenlang debuggen, Process Monitor-sessies en talloze configuratievergelijkingen was de oplossing angstaanjagend eenvoudig: Windows Taakplanner stelt standaard een lagere procesprioriteit in. De standaardwaarde voor taken in Taakplanner is 7 (Onder Normaal), niet 4-6 (Normaal) zoals verwacht. Dit ogenschijnlijk kleine verschil kan leiden tot een enorme prestatieverslechtering bij I/O-intensieve bewerkingen.

De Windows-prioriteitsniveaus in detail zijn:

WaardePrioriteitOmschrijving
0RealtimeHoogste prioriteit (let op!)
1HoogHoge prioriteit
2-3Boven normaalOver Normaal
4-6NormaalStandaard voor interactieve processen
7Onder normaalSTANDAARD in Taakplanner
8-9Onder normaalNog lager
10InactiefLaagste prioriteit

Het probleem met prioriteit bij het plannen van taken is meerlagig: wanneer u een taak exporteert en naar de XML kijkt, zult u vaak Nee Prioriteitsinstelling. Windows gebruikt dan stilzwijgend de standaardwaarde. 7. De GUI geeft deze waarde weer tijdens het exporteren, maar deze wordt niet expliciet in de taak opgeslagen. De lagere prioriteit resulteert niet alleen in minder CPU-tijd, maar ook in minder tijd.:

  • Beperkte schijf-I/O-bewerkingen
  • Lagere netwerkprioriteit
  • Slechte cache van bestandssysteem
  • Vertragingen in databasetoegang

Zelfs als u dezelfde gebruiker gebruikt en 'Uitvoeren met de hoogste rechten' inschakelt, wordt de taak uitgevoerd in een ander Windows-station/desktopomgeving met andere prioriteiten. Om het probleem te identificeren, kunt u PowerShell gebruiken om alle taken met hun werkelijke prioriteiten weer te geven.:

38b7fa6c77dc344401485cd338ea4128

Bijna al mijn taken werden met prioriteit uitgevoerd 7. We corrigeren nu specifiek de prioriteit van meerdere taken tegelijk:

38b7fa6c77dc344401485cd338ea4128

Nadat u de prioriteit hebt ingesteld op 4 (Normaal gesproken) werd mijn PHP-script binnen de verwachte 300 seconden opnieuw uitgevoerd. Als u taken met een specifiek gebruikersaccount hebt geconfigureerd, kunt u dit ook eenvoudig opgeven in regel 10, als volgt.:

38b7fa6c77dc344401485cd338ea4128

Terug