En interaktiv guide til størrelsesbaseret scheduling. Hver model har en simulator der kører en diskret-event-simulering direkte i din browser, så du selv kan se empiriske data konvergere mod de teoretiske resultater fra de tre kildeartikler.
De tre artikler bygger oven på hinanden. Det er en rejse fra den rene, perfekt analyserbare verden mod den rodede, realistiske:
Alle tre modeller deler den samme byggeklods: Poisson-ankomster med rate λ, servicetider trukket fra en fordeling, og en scheduling-regel der afgør hvem der får serveren. Forskellen ligger i antal servere, om jobs kan give op, og om vi kender servicetiderne præcist. Vores simulatorer er alle diskret-event-motorer: de hopper fra hændelse til hændelse (ankomst, service-slut, abandonment) og opdaterer systemtilstanden.
Schrage & Miller beviste at SRPT minimerer middel-flowtid i M/G/1, og udledte en lukket formel for den. De sammenlignede også FCFS, ikke-præemptiv SPT, og to-klasse-regler. Den interessante intuition fra deres Tabel I: de grove to-klasse-regler henter langt det meste af gevinsten ved blot at skelne "kort" fra "lang". Det er præcis den pointe Dong & Ibrahim genfinder 60 år senere i den langt mere komplekse mange-server-verden.
Simulatoren herunder kører M/G/1 og lader dig vælge disciplin. Den teoretiske SRPT-flowtid beregnes ved numerisk integration af Schrage & Millers formel og tegnes som en stiplet linje. For eksponentielle servicetider med middel 1 reduceres FCFS-flowtiden til 1/(1−ρ), hvilket vi også viser.
Sammenlign flowtid under FCFS, SPT (ikke-præemptiv, korteste job først) og SRPT. Eksponentielle servicetider, middel = 1.
Med flere servere er SRPT ikke længere optimal i værste fald: Leonardi & Raz konstruerede modeksempler hvor SRPT-k kan være vilkårligt dårligere end optimum. Grosof et al. redder situationen i den stokastiske, høj-last-grænse: de viser at middel-svartiden under SRPT på k servere (hver med fart 1/k) nærmer sig middel-svartiden under SRPT på én hurtig server, når ρ → 1. Da single-server SRPT er optimal, er SRPT-k dermed asymptotisk optimal blandt alle k-server-regler.
Den centrale størrelse: forholdet E[TSRPT-k] / E[TSRPT-1] → 1 når ρ → 1. Simulatoren kører begge systemer på den samme ankomststrøm og plotter dette forhold mod lasten, så du ser konvergensen mod 1 (præcis som forfatternes Figur 3.1).
Begge systemer ser samme jobs. Vi måler forholdet mellem k-server-svartid og single-server-svartid. Teori: forholdet → 1 når ρ → 1.
Nu bliver det realistisk. Mange servere, kunder med endelig tålmodighed der giver op hvis de venter for længe, og kun et støjfuldt estimat af hver kundes servicetid. Når systemet er overbelastet (ρ > 1) er throughput den interessante størrelse: nogle kunder vil uundgåeligt give op, og en god scheduling-regel maksimerer hvor mange der faktisk bliver betjent.
Dong & Ibrahims hovedresultater, som simulatoren genskaber:
Vi bruger lognormale servicetider med middel 1, ligesom i artiklen. Parameteren α (0 til 1) styrer hvor god prediktionen er: α ≈ 0 er næsten ren støj, α ≈ 1 er næsten perfekt. Simulatoren rapporterer throughput (andel betjent) under FCFS, støjfuld SJF og den to-klasse-regel.
Overbelastet mange-server-kø med abandonment. Sammenlign throughput under FCFS, støjfuld SJF og to-klasse-prioritering. Lognormale servicetider, eksponentiel tålmodighed.
Mange-server-køer er ikke order-conserving og under SRPT-k ikke work-conserving, så de klassiske single-server-argumenter (som tagged-job-metoden) overføres ikke direkte. Det er grunden til at multiserver-SRPT var et åbent problem i årtier. Se Grosof et al. (2018), afsnit 1, og Dong & Ibrahim, afsnit 1.2.