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ësi | Përshkrim |
|---|---|---|
| 0 | Në kohë reale | Prioriteti më i lartë (kujdes!) |
| 1 | I lartë | Prioritet i lartë |
| 2-3 | Mbi normalen | Rreth Normale |
| 4-6 | Normale | Standard për proceset interaktive |
| 7 | Nën normale | PARAPRAKISHT në Planifikuesin e Detyrave |
| 8-9 | Nën normale | Edhe më e ulët |
| 10 | Në gjendje joaktive | Prioriteti 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