Ĉiu, kiu plenumas taskojn en la Vindoza Taskplanilo, pli frue aŭ pli malfrue renkontos neklarigeblajn diferencojn en la plenumado. PHP-skripto, kiu plenumiĝas en 5 minutoj per la komandlinio, subite bezonas 20 minutojn kiam plenumata per la Vindoza Taskplanilo. Sama uzanto, samaj permesoj, sama kodo - kvaroble pli longa plenumtempo. Kio okazis?
Post horoj da sencimigado, sesioj de Process Monitor, kaj sennombraj komparoj de agordoj, la solvo estis timige simpla: Windows Task Scheduler defaŭlte agordas pli malaltan prioritaton de procezo. La defaŭlta valoro por taskoj en Task Scheduler estas 7 (Sub Normala), ne 4-6 (Normala) kiel atendate. Ĉi tiu ŝajne malgranda diferenco povas konduki al grandega rendimenta degradiĝo en I/O-intensaj operacioj.
La Vindozaj prioritatniveloj detale estas:
| Valoro | Prioritato | Priskribo |
|---|---|---|
| 0 | Reala tempo | Plej alta prioritato (atentu!) |
| 1 | Alta | Alta prioritato |
| 2-3 | Super Normala | Pri Normala |
| 4-6 | Normala | Normo por interagaj procezoj |
| 7 | Sub Normala | DEFAŬLTO en Taskplanilo |
| 8-9 | Sub Normala | Eĉ pli malalta |
| 10 | Neaktiva | Plej malalta prioritato |
La problemo kun prioritato en taskoplanado estas plurtavola: Kiam vi eksportas taskon kaj rigardas la XML-dosieron, vi ofte ne Prioritata agordo. Vindozo tiam silente uzos la defaŭltan valoron 7. La grafika uzulinterfaco montras ĉi tiun valoron dum eksportado, sed ĝi ne estas eksplicite konservita en la tasko. La pli malalta prioritato ne nur rezultigas malpli da CPU-tempo, sed ankaŭ:
- Trankviligitaj diskaj I/O-operacioj
- Pli malalta reto-prioritato
- Malbona dosiersistema kaŝmemorigo
- Prokrastoj en aliro al datumbazo
Eĉ se vi uzas la saman uzanton kaj ebligas "Ruliĝi kun plej altaj privilegioj", la tasko funkcias en malsama Vindoza stacio/labortabla medio kun malsamaj prioritatoj. Por identigi la problemon, vi povas uzi PowerShell por listigi ĉiujn taskojn kun iliaj faktaj prioritatoj.:
38b7fa6c77dc344401485cd338ea4128
Preskaŭ ĉiuj miaj taskoj funkciis kun prioritato 7. Ni nun specife korektas la prioritaton de pluraj taskoj samtempe:
38b7fa6c77dc344401485cd338ea4128
Post agordo de la prioritato al 4 (Normale) mia PHP-skripto denove funkciis post la atenditaj 300 sekundoj. Se vi agordis taskojn kun specifa uzantkonto, vi ankaŭ povas facile specifi tion en linio 10 jene.:
38b7fa6c77dc344401485cd338ea4128