Prioriteti në Planifikuesin e Detyrave të Windows

Kushdo që ekzekuton detyra në Windows Task Scheduler herët a vonë do të hasë ndryshime të pashpjegueshme në kohën e ekzekutimit. Një skript PHP që ekzekutohet për 5 minuta në rreshtin e komandës papritmas zgjat 20 minuta kur ekzekutohet nëpërmjet Windows Task Scheduler. I njëjti përdorues, të njëjtat leje, i njëjti kod - katër herë më shumë kohë ekzekutimi. Çfarë po ndodhte?


Pas orësh të tëra debugging-u, seancash Process Monitor dhe krahasimesh të panumërta konfigurimi, zgjidhja ishte tmerrësisht e thjeshtë: Windows Task Scheduler vendos një prioritet më të ulët të procesit si parazgjedhje. Vlera parazgjedhur për detyrat në Task Scheduler është 7 (Nën normale), jo 4-6 (Normale) siç pritej. Ky ndryshim në dukje i vogël mund të çojë në degradim masiv të performancës në operacionet me intensivitet I/O.

Nivelet e përparësisë së Windows në detaje janë:

VlerëPërparësiPërshkrim
0Në kohë realePrioriteti më i lartë (kujdes!)
1I lartëPrioritet i lartë
2-3Mbi normalenRreth Normale
4-6NormaleStandard për proceset interaktive
7Nën normalePARAPRAKISHT në Planifikuesin e Detyrave
8-9Nën normaleEdhe më e ulët
10Në gjendje joaktivePrioriteti më i ulët

Problemi me përparësinë në planifikimin e detyrave është shumështresor: Kur eksportoni një detyrë dhe shikoni XML-në, shpesh do të jo Vendosja e përparësisë. Windows do të përdorë më pas në heshtje vlerën e parazgjedhur. 7. Ndërfaqja grafike e përdoruesit (GUI) e shfaq këtë vlerë gjatë eksportimit, por nuk ruhet në mënyrë të qartë në detyrë. Prioriteti më i ulët jo vetëm që rezulton në më pak kohë të CPU-së, por edhe:

  • Operacionet e hyrjes/daljes së diskut të frenuar
  • Prioritet më i ulët i rrjetit
  • Ruajtje e dobët e memorjes në sistemin e skedarëve
  • Vonesa në aksesin në bazën e të dhënave

Edhe nëse përdorni të njëjtin përdorues dhe aktivizoni "Run with the highest privileges", detyra ekzekutohet në një stacion/mjedis tjetër të Windows me përparësi të ndryshme. Për të identifikuar problemin, mund të përdorni PowerShell për të listuar të gjitha detyrat me përparësitë e tyre aktuale.:

38b7fa6c77dc344401485cd338ea4128

Pothuajse të gjitha detyrat e mia u kryen me përparësi 7. Tani ne korrigjojmë në mënyrë specifike përparësinë e disa detyrave menjëherë:

38b7fa6c77dc344401485cd338ea4128

Pasi të keni vendosur përparësinë në 4 (Normalisht) skripti im PHP ekzekutohej përsëri brenda 300 sekondave të pritura. Nëse keni konfiguruar detyra me një llogari specifike përdoruesi, mund ta specifikoni lehtësisht këtë në rreshtin 10 si më poshtë.:

38b7fa6c77dc344401485cd338ea4128

Mbrapa