Ĉiu, kiu prizorgas laborpostenojn en la Vindoza taskoplanilo, pli aŭ malpli frue trafos neklarigeblajn diferencojn en rultempo. PHP-skripto, kiu funkcias en 5 minutoj sur la komandlinio, subite daŭras 20 minutojn kiam ĝi funkcias per Windows Task Scheduler. Sama uzanto, samaj rajtoj, sama kodo - kvaroble la ekzekuttempo. Kio okazis tie?
Post horoj Sencimigado, Procezaj monitoraj sesioj kaj sennombraj agordaj komparoj, la solvo estis ŝoke simpla: Vindoza taskoplanado fiksas defaŭlte pli malaltan procezprioritato. La defaŭlta valoro por taskoj en Task Scheduler estas 7 (Sub Normala), ne 4-6 (Normala), kiel vi atendus. Ĉi tiu ŝajne malgranda diferenco povas kaŭzi masivajn rendimentajn perdojn 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 multfaceta: Kiam vi eksportas taskon kaj rigardas la XML-dosieron, vi ofte trovos 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 Mia PHP-skripto kuris (normale) denove en la atendataj 300 sekundoj. Se vi agordis taskojn kun specifa uzantkonto, vi povas simple enigi ĉi tion en linio 10 jene:
38b7fa6c77dc344401485cd338ea4128