Prioritato en Vindoza Taskplanilo

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

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

Reen