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

Google predložio uključiti u Linux kernel prvi set zakrpa sa implementacijom komponenti neophodnih za osiguranje rada M:N threading modela. Guglova inicijativa je vezana za otvaranje API-ja koji se razvijao iza zatvorenih vrata Prebaciti na za Linux kernel, koji omogućava rad višenitnog podsistema implementiranog u korisničkom prostoru, koristeći M:N threading model. Podsistem koristi Google kako bi osigurao rad usluga koje zahtijevaju minimalna kašnjenja. Planiranje i upravljanje distribucijom niti se u potpunosti obavlja u korisničkom prostoru, što može značajno smanjiti broj operacija promjene konteksta minimiziranjem izvršavanja sistemskih poziva.

Kako bi se osigurao rad navedenog podsistema na nivou Linux kernela, implementiran je SwitchTo API koji nudi tri osnovne operacije - čekanje, nastavak i zamjenu (switching). Za uključivanje u kernel, predlaže se kod nove operacije FUTEX_SWAP, 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 LinuxThreads, 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.

izvor: opennet.ru

Dodajte komentar