Google je započeo s otvaranjem implementacije M:N flow modela

Google predložio za uključivanje u Linux kernel prvi set zakrpa s implementacijom komponenti potrebnih za osiguranje rada M:N threading modela. Googleova inicijativa vezana je uz otvaranje API-ja koji je razvijen iza zatvorenih vrata Prebaciti na za Linux kernel, koji pruža multi-threaded podsustav implementiran u korisničkom prostoru koji koristi M:N model threading. Podsustav koristi Google za pružanje usluga koje zahtijevaju minimalna kašnjenja. Planiranje i upravljanje distribucijom niti se u potpunosti izvodi u korisničkom prostoru, što može značajno smanjiti broj prebacivanja konteksta minimiziranjem izvršavanja sistemskih poziva.

Kako bi se osigurao rad ovog podsustava, na razini Linux kernela implementiran je SwitchTo API koji nudi tri osnovne operacije - čekanje, nastavak i swap (prebacivanje). Za uključivanje u kernel, predlaže se kod za novu operaciju FUTEX_SWAP, koja se nadopunjuje FUTEX_WAIT i FUTEX_WAKE, i pruža okvir za izgradnju višenitnih knjižnica korisničkog prostora. FUTEX_SWAP se također može koristiti za prijenos poruka između zadataka, slično RPC-u. Na primjer, trenutno su za prijenos poruke između zadataka potrebna najmanje četiri poziva FUTEX_WAIT i FUTEX_WAKE, dok će korištenje FUTEX_SWAP omogućiti da se jedna operacija završi 5-10 puta brže.

Google je započeo s otvaranjem implementacije M:N flow modela

Trenutno se u praksi uglavnom koriste modeli protoka 1:1 i N:1. Model 1:1 koristi se u NPTL (POSIX niti) i LinuxThreads, a podrazumijeva izravno preslikavanje niti korisničkog prostora u nit (jedinicu rasporeda izvršenja) na razini jezgre. Model N:1 implementiran je u GNU Pth, donosi raspoređivanje niti u korisnički prostor i omogućuje N nitima korisničkog prostora da se vežu na jednu nit u kernelu, a da kernel ne zna za korisničke niti.

Glavni nedostatak modela 1:1 je velika potrošnja kontekstnog prebacivanja između kernela i korisničkog prostora. Model N:1 rješava ovaj problem, ali stvara novi - budući da je nit u jezgri nedjeljiva jedinica rasporeda izvršenja, korisničke niti vezane na jednu nit u jezgri operacijskog sustava ne mogu se skalirati preko CPU jezgri i postati vezane za jednu jezgru procesora.

M:N model je hibridan i rješava sve gore navedene nedostatke preslikavanjem N niti korisničkog prostora u M niti kernela, smanjujući opterećenje kontekstnog prebacivanja i skaliranje preko CPU jezgri. Cijena ove opcije je velika komplikacija implementacije planera niti u korisničkom prostoru i potreba za mehanizmima za koordinaciju radnji s planerom jezgre.

Izvor: opennet.ru

Dodajte komentar