Google je začel odpirati implementacijo tokovnega modela M:N

Google predlagano za vključitev v jedro Linuxa prvi nabor popravkov z implementacijo komponent, potrebnih za zagotavljanje delovanja M:N threading modela. Googlova pobuda je povezana z odprtjem API-ja, razvitega za zaprtimi vrati Preklopite na za jedro Linuxa, ki zagotavlja večnitni podsistem, implementiran v uporabniškem prostoru, ki uporablja model navojev M:N. Podsistem Google uporablja za zagotavljanje storitev, ki zahtevajo minimalne zamude. Razporejanje in upravljanje distribucije niti se v celoti izvaja v uporabniškem prostoru, kar lahko znatno zmanjša število preklopov konteksta z minimiziranjem izvajanja sistemskih klicev.

Za zagotovitev delovanja tega podsistema je bil na ravni jedra Linux implementiran API SwitchTo, ki ponuja tri osnovne operacije - čakanje, nadaljevanje in zamenjava (preklapljanje). Za vključitev v jedro je predlagana koda za novo operacijo FUTEX_SWAP, ki dopolnjuje FUTEX_WAIT in FUTEX_WAKE, in zagotavlja ogrodje za gradnjo večnitnih knjižnic uporabniškega prostora. FUTEX_SWAP se lahko uporablja tudi za prenos sporočil med nalogami, podobno kot RPC. Na primer, trenutno so za prenos sporočila med opravili potrebni vsaj štirje klici FUTEX_WAIT in FUTEX_WAKE, medtem ko bo uporaba FUTEX_SWAP omogočila, da bo ena operacija dokončana 5- do 10-krat hitreje.

Google je začel odpirati implementacijo tokovnega modela M:N

Trenutno se v praksi uporabljata predvsem modela toka 1:1 in N:1. Model 1:1 se uporablja v NPTL (POSIX niti) in LinuxThreads, in implicira neposredno preslikavo niti uporabniškega prostora v nit (enoto za načrtovanje izvajanja) na ravni jedra. Model N:1 je implementiran v GNU Pth, prinaša razporejanje niti v uporabniški prostor in omogoča, da se N niti uporabniškega prostora povežejo z eno samo nitjo v jedru, ne da bi jedro vedelo za uporabniške niti.

Glavna pomanjkljivost modela 1:1 je velik strošek preklapljanja konteksta med jedrom in uporabniškim prostorom. Model N:1 rešuje to težavo, vendar ustvarja novo – ker je nit v jedru nedeljiva enota načrtovanja izvajanja, uporabniške niti, vezane na eno samo nit v jedru operacijskega sistema, ne morejo razširjati po jedrih CPE in postati vezane na eno jedro procesorja.

Model M:N je hibriden in odpravlja vse zgoraj navedene pomanjkljivosti s preslikavo N niti uporabniškega prostora v M niti jedra, pri čemer oboje zmanjša stroške preklopa konteksta in skaliranje po jedrih CPU. Cena te možnosti je velika zapletenost implementacije razporejevalnika niti v uporabniški prostor in potreba po mehanizmih za usklajevanje dejanj z razporejevalnikom jedra.

Vir: opennet.ru

Dodaj komentar