Google ir sācis atvērt M:N vītņu modeļa ieviešanu

Google ieteikts iekļaut Linux kodolā pirmo ielāpu komplektu ar M:N vītņu modeļa darbības nodrošināšanai nepieciešamo komponentu ieviešanu. Google iniciatīva ir saistīta ar API atvēršanu, kas tika izstrādāta aiz slēgtām durvīm Pāriet uz Linux kodolam, kas nodrošina daudzpavedienu apakšsistēmas darbību, kas realizēta lietotāja telpā, izmantojot M:N vītņu modeli. Apakšsistēmu Google izmanto, lai nodrošinātu tādu pakalpojumu darbību, kuriem nepieciešama minimāla aizkave. Pavedienu izplatīšanas plānošana un pārvaldība tiek pilnībā veikta lietotāja telpā, kas var ievērojami samazināt konteksta pārslēgšanas operāciju skaitu, samazinot sistēmas izsaukumu izpildi.

Lai nodrošinātu norādītās apakšsistēmas darbību Linux kodola līmenī, tika ieviesta SwitchTo API, kas piedāvā trīs pamatoperācijas - gaidīšana, atsākšana un swap (pārslēgšana). Iekļaušanai kodolā tiek piedāvāts jaunas operācijas FUTEX_SWAP kods, kas papildina FUTEX_WAIT un FUTEX_WAKE, un nodrošina ietvaru vairāku pavedienu bibliotēku izveidei lietotāja telpā. FUTEX_SWAP var izmantot arī, lai pārsūtītu ziņojumus starp uzdevumiem, līdzīgi kā RPC. Piemēram, šobrīd, lai pārsūtītu ziņojumu starp uzdevumiem, jāveic vismaz četri zvani uz FUTEX_WAIT un FUTEX_WAKE, bet FUTEX_SWAP izmantošana ļaus iztikt ar vienu darbību, kas tiks pabeigta 5-10 reizes ātrāk.

Google ir sācis atvērt M:N vītņu modeļa ieviešanu

Pašlaik praksē galvenokārt tiek izmantoti 1:1 un N:1 plūsmas modeļi. Tiek izmantots 1:1 modelis NPTL (POSIX straumes) un Linux Threads, un nozīmē tiešu lietotāja telpas pavediena kartēšanu ar pavedienu (izpildes plānošanas vienību) kodola līmenī. Modelis N:1 ieviests GNU Pth, nodrošina pavedienu nosūtīšanu lietotāja telpā un ļauj lietotāja telpā esošos N pavedienus saistīt ar vienu kodola pavedienu, kodolam nezinot par lietotāja pavedieniem.

Galvenais 1:1 modeļa trūkums ir lielā konteksta pārslēgšanās starp kodolu un lietotāja telpu. N:1 modelis atrisina šo problēmu, bet rada jaunu — tā kā pavediens kodolā ir nedalāma izpildes plānošanas vienība, lietotāja pavedieni, kas saistīti ar vienu pavedienu operētājsistēmas kodolā, nevar mērogoties pa CPU kodoliem un galu galā ir saistīti ar viens CPU kodols.

M:N modelis ir hibrīds un novērš visus iepriekš aprakstītos trūkumus, kartējot N pavedienus lietotāja telpā ar M pavedieniem OS kodolā, kas ļauj gan samazināt konteksta pārslēgšanu, gan nodrošināt mērogošanu starp CPU kodoliem. Šīs opcijas izmaksas ir diegu plānotāja ieviešanas lielā sarežģītība lietotāja telpā un nepieciešamība pēc mehānismiem darbību koordinēšanai ar kodola plānotāju.

Avots: opennet.ru

Pievieno komentāru