Prioriteti në Planifikuesin e Detyrave të Windows

Kushdo që kryen punë në programuesin e detyrave të Windows, herët a vonë do të ndeshet me dallime të pashpjegueshme në kohën e ekzekutimit. Një skript PHP që funksionon në 5 minuta në vijën e komandës kërkon papritur 20 minuta kur ekzekutohet përmes Windows Task Scheduler. I njëjti përdorues, të njëjtat të drejta, i njëjti kod - katërfishi i kohës së ekzekutimit. Çfarë po ndodhte atje?


Pas orëve Korrigjimi, Sesionet e monitorimit të procesit dhe krahasimet e panumërta të konfigurimit, zgjidhja ishte tronditëse e thjeshtë: planifikimi i detyrave të Windows vendos një prioritet më të ulët të procesit si parazgjedhje. Vlera e paracaktuar për detyrat në Task Scheduler është 7 (Nën normale), jo 4-6 (Normale), siç e prisnit. Ky ndryshim në dukje i vogël mund të çojë në humbje masive të performancës në operacionet intensive 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ëplanësh: Kur eksportoni një detyrë dhe shikoni XML-në, shpesh do të gjeni 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 Skripti im PHP u ekzekutua (normalisht) përsëri në 300 sekondat e pritura. Nëse keni konfiguruar detyra me një llogari të veçantë përdoruesi, thjesht mund ta futni këtë në rreshtin 10 si më poshtë:

38b7fa6c77dc344401485cd338ea4128

Mbrapa