CMD + K

Kapittel 5Begreper & formler · Proportional share og multiprosessor-planlegging
Referanseside · Kapittel 5

Begreper & formler

Alle nøkkelbegrepene og formlene fra Proportional share og multiprosessor-planlegging, samlet på én side. Bruk denne som oppslag når du leser, øver flashcards eller tar quiz.

Øv med flashcards22 kort fra dette kapittelet

Begreper

Sentrale begreper fra kapittelet med korte definisjoner.

01Lottery scheduling

Schedulering der prosesser får billetter, og sannsynligheten for CPU-andel er proporsjonal med antall billetter.

02Proportional share

Målet om at hver jobb får en andel CPU som samsvarer med tildelt vekt eller antall billetter.

03Cache affinity

Fordelen ved å la en tråd fortsette på samme kjerne for å gjenbruke varme cache-linjer.

04Load balancing

Flytting av arbeid mellom kjerner for å unngå at noen er overbelastet mens andre er ledige.

05Single-queue scheduling

Alle kjerner henter arbeid fra én felles kø. Enkelt, men kan gi låseinnhold og cache-tap.

06Multi-queue scheduling

Hver kjerne har sin egen kø, ofte kombinert med periodisk balansering.

07Speedup

Hvor mye raskere en arbeidslast går når vi bruker flere kjerner.

08Skalerbarhet

Hvor godt ytelsen øker når systemet får flere prosessorer eller kjerner.

09CFS (Completely Fair Scheduler)

Linux sin standard-scheduler siden 2007. Mål: rettferdig fordeling av CPU-tid. Bruker ikke prioritetskøer som MLFQ, men en enkelt rød-svart tre indeksert på virtual runtime.

10Virtual runtime (vruntime)

Hvor mye CPU-tid en tråd har akkumulert, vektet med tråden sin nice/weight. CFS velger alltid tråden med lavest vruntime — det er den som har fått minst tid relativt sett.

11Nice value

Tall fra -20 (høyest prioritet) til +19 (lavest), default 0. CFS oversetter nice til en weight: jo lavere nice, jo høyere weight, jo saktere vokser vruntime, jo mer CPU får tråden.

12Rød-svart tre i CFS

Selvbalanserende søketre der noder er sortert på vruntime. Innsetting/sletting/slå-opp er O(log n). Tråden lengst til venstre (laveste vruntime) er neste som skal kjøre.

13min_vruntime

Bokført minimum vruntime i køen. Brukes når en tråd vekkes etter I/O — den får vruntime = max(egen vruntime, min_vruntime) slik at den ikke får urettmessig mye CPU bare fordi den sov lenge.

14sched_latency

Tidsvinduet CFS prøver å gi alle aktive tråder kjøring innenfor (typisk 48 ms). Time slice per tråd ≈ sched_latency / antall aktive tråder, modifisert av weight.

15sched_min_granularity

Minste mulige time slice (typisk 6 ms). Hindrer at time slice blir absurd liten ved mange tråder.

16Stride scheduling

Deterministisk variant av lottery: hver prosess har en stride (omvendt proporsjonal med billetter) og en pass-teller. Velg alltid prosessen med lavest pass-verdi, øk passet med stride. Gir nøyaktig proporsjonal fordeling uten flaks.

Formler

Hver formel: hva den heter, hvordan den ser ut, og hva symbolene betyr.

lottery-share

Forventet CPU-andel i lottery scheduling

Logg inn for forklaring

Med mange trekninger vil andelen CPU-tid nærme seg denne brøken.

billetter_iprosessens egne billetter
billetter_totalsum av alle billetter i systemet

Måler gevinsten av å bruke p prosessorer i stedet for én.

T_1kjøretid på én kjerne
T_pkjøretid på p kjerner
efficiency

Parallell effektivitet

Logg inn for forklaring

Viser hvor stor del av ideell skaleringsgevinst systemet faktisk oppnår.

pantall kjerner brukt
cfs-slice

CFS time slice

Logg inn for forklaring

Tråd med høyere weight (lavere nice) får større andel av sched_latency-vinduet. Med default-vekt og N like tråder blir det sched_latency/N hver.

w_ivekt for tråd i (utledet fra nice-verdien)
sched_latencymålperiode for at alle skal ha kjørt (typisk 48 ms)
vruntime-acc

vruntime-akkumulering

Logg inn for forklaring

Default-tråden (weight_0, nice=0) sin vruntime vokser 1:1 med klokketid. Tråd med høyere weight (lavere nice) får vruntime til å vokse saktere → den ligger lenger venstre i treet → får mer CPU.

w_0default-vekten (nice = 0)
w_ivekten til tråd i
realklokketid tråden faktisk fikk
vruntime-wakeup

vruntime ved oppvåkning fra I/O

Logg inn for forklaring

Forhindrer at en prosess som sovet lenge dominerer CPU når den vekkes (vruntime hadde vært lav). Setter den til minst min_vruntime så den må konkurrere normalt.

Læringsmål

Hva du skal kunne etter å ha lest kapittelet.

  1. 01Forklare hvordan lottery- og stride-scheduling oppnår proporsjonal CPU-fordeling
  2. 02Regne ut speedup og parallell effektivitet for et eksempel-jobbsett
  3. 03Sammenligne single-queue og multi-queue scheduling med hensyn til cache-affinity og lastbalansering
  4. 04Beskrive hvordan CFS bruker vruntime, weight og rød-svart tre for å velge neste tråd