Prioritato en Vindoza Taskplanilo

Ĉ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:

ValoroPrioritatoPriskribo
0Reala tempoPlej alta prioritato (atentu!)
1AltaAlta prioritato
2-3Super NormalaPri Normala
4-6NormalaNormo por interagaj procezoj
7Sub NormalaDEFAŬLTO en Taskplanilo
8-9Sub NormalaEĉ pli malalta
10NeaktivaPlej 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

Reen