Google je počeo da otvara implementaciju M:N threading modela

Google predložio za uključivanje u jezgro Linux Prvi set zakrpa koje implementiraju komponente potrebne za podršku M:N streaming modela. Googleova inicijativa se odnosi na otvaranje API-ja koji je razvijan iza zatvorenih vrata. Prebaciti na za jezgro Linux, koji pokreće višenitni podsistem korisničkog prostora koristeći M:N model niti. Ovaj podsistem se koristi u Googleu za podršku uslugama koje zahtijevaju minimalnu latenciju. Raspoređivanje i upravljanje nitima se u potpunosti obavljaju u korisničkom prostoru, značajno smanjujući broj promjena konteksta minimiziranjem sistemskih poziva.

Da bi se osiguralo funkcionisanje navedenog podsistema na nivou kernela Linux Implementiran je SwitchTo API, koji nudi tri osnovne operacije: čekanje, nastavak i zamjenu. Nova operacija, FUTEX_SWAP, predložena je za uključivanje u jezgro, dopunjujući FUTEX_WAIT i FUTEX_WAKE, i pruža okvir za kreiranje višenitnih biblioteka u korisničkom prostoru. FUTEX_SWAP se također može koristiti za prijenos poruka između zadataka, slično RPC-u. Na primjer, trenutno, da biste prenijeli poruku između zadataka, morate izvršiti najmanje četiri poziva na FUTEX_WAIT i FUTEX_WAKE, ali korištenje FUTEX_SWAP će vam omogućiti da prođete s jednom operacijom, koja će se završiti 5-10 puta brže.

Google je počeo da otvara implementaciju M:N threading modela

Trenutno se u praksi uglavnom koriste modeli protoka 1:1 i N:1. Model 1:1 se koristi u NPTL (POSIX tokovi) i Linuxteme, i podrazumijeva direktno mapiranje niti u korisničkom prostoru u nit (jedinicu planiranja izvršenja) na nivou kernela. Model N:1 implementiran u GNU Pth, donosi dispečiranje niti u korisnički prostor i omogućava da se N niti u korisničkom prostoru vežu za jednu nit u kernelu, bez da kernel ima znanje o korisničkim nitima.

Glavni nedostatak modela 1:1 je veliki troškovi prebacivanja konteksta između kernela i korisničkog prostora. Model N:1 rješava ovaj problem, ali stvara novi - budući da je nit u kernelu nedjeljiva jedinica planiranja izvršenja, korisničke niti vezane za jednu nit u kernelu operativnog sistema ne mogu se proširivati ​​preko jezgara CPU-a i završiti vezane za jedno CPU jezgro.

M:N model je hibridan i eliminiše sve gore opisane nedostatke mapiranjem N niti u korisničkom prostoru u M niti u jezgru OS-a, što omogućava i smanjenje troškova prebacivanja konteksta i osiguravanje skaliranja preko CPU jezgara. Cijena ove opcije je velika složenost implementacije planera niti u korisnički prostor i potreba za mehanizmima za koordinaciju akcija sa planerom kernela.

Reprodukujte video

izvor: opennet.ru

Kupite pouzdan hosting za sajtove sa DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan web hosting sa DDoS zaštitom, VPS VDS servere | ProHoster