Google er begyndt at åbne implementeringen af ​​M:N flow-modellen

Google foreslået til optagelse i Linux-kernen det første sæt patches med implementering af de komponenter, der er nødvendige for at sikre arbejdet med M: N-trådmodellen. Googles initiativ er relateret til åbningen af ​​en API udviklet bag lukkede døre Skifte til til Linux-kernen, som giver et multi-threaded-undersystem implementeret i brugerrummet, der bruger M:N-trådmodellen. Undersystemet bruges af Google til at levere tjenester, der kræver minimale forsinkelser. Planlægningen og styringen af ​​tråddistribution udføres udelukkende i brugerrummet, hvilket kan reducere antallet af kontekstskift væsentligt ved at minimere udførelsen af ​​systemkald.

For at sikre driften af ​​dette undersystem blev SwitchTo API implementeret på Linux-kerneniveau, der tilbyder tre grundlæggende operationer - vent, genoptag og swap (skift). Til inklusion i kernen foreslås en kode til en ny FUTEX_SWAP-operation, der supplerer FUTEX_WAIT og FUTEX_WAKE, og giver en ramme til opbygning af flertrådede brugerrumsbiblioteker. FUTEX_SWAP kan også bruges til at sende beskeder mellem opgaver, svarende til RPC. For eksempel, for at overføre en besked mellem opgaver, kræves der på nuværende tidspunkt mindst fire opkald til FUTEX_WAIT og FUTEX_WAKE, mens brug af FUTEX_SWAP vil gøre det muligt at udføre en operation 5-10 gange hurtigere.

Google er begyndt at åbne implementeringen af ​​M:N flow-modellen

På nuværende tidspunkt anvendes flowmodellerne 1:1 og N:1 hovedsageligt i praksis. 1:1 modellen bruges i NPTL (POSIX-tråde) og LinuxThreads, og indebærer en direkte afbildning af en brugerrumstråd til en tråd (enhed for udførelsesplanlægning) på kerneniveau. N:1-modellen er implementeret i GNU Pth, bringer trådplanlægning til user-space og tillader N user-space-tråde at binde til en enkelt tråd i kernen, uden at kernen kender til bruger-tråde.

Den største ulempe ved 1:1-modellen er den store overhead af kontekstskifte mellem kerne og brugerrum. N:1-modellen løser dette problem, men skaber et nyt - da en tråd i kernen er en udelelig enhed for udførelsesplanlægning, kan brugertråde, der er bundet til en enkelt tråd i operativsystemkernen, ikke skalere på tværs af CPU-kerner og blive bundet til en enkelt CPU-kerne.

M:N-modellen er hybrid og adresserer alle ovennævnte ulemper ved at kortlægge N userspace-tråde til M-kernetråde, hvilket både reducerer kontekstswitch-overhead og skalering på tværs af CPU-kerner. Prisen for denne mulighed er den store komplikation ved implementeringen af ​​trådplanlæggeren i brugerrummet og behovet for mekanismer til at koordinere handlinger med kerneplanlæggeren.

Kilde: opennet.ru

Tilføj en kommentar