Google har börjat öppna implementeringen av M:N-flödesmodellen

Google föreslog för införande i Linux-kärnan den första uppsättningen patchar med implementering av de komponenter som är nödvändiga för att säkerställa arbetet med M:N-trådningsmodellen. Googles initiativ är relaterat till öppnandet av ett API utvecklat bakom stängda dörrar Byta till för Linux-kärnan, som tillhandahåller ett flertrådigt delsystem implementerat i användarutrymmet som använder M:N-trådningsmodellen. Undersystemet används av Google för att tillhandahålla tjänster som kräver minimala förseningar. Schemaläggning och hantering av tråddistribution utförs helt och hållet i användarutrymmet, vilket avsevärt kan minska antalet kontextväxlar genom att minimera exekveringen av systemanrop.

För att säkerställa driften av detta delsystem implementerades SwitchTo API på Linux-kärnnivå, och erbjuder tre grundläggande operationer - vänta, återuppta och byta (byta). För inkludering i kärnan föreslås en kod för en ny FUTEX_SWAP-operation, som kompletterar FUTEX_WAIT och FUTEX_WAKE, och tillhandahåller ett ramverk för att bygga flertrådade användarutrymmesbibliotek. FUTEX_SWAP kan också användas för att skicka meddelanden mellan uppgifter, liknande RPC. Till exempel, för närvarande, för att överföra ett meddelande mellan uppgifter, krävs minst fyra anrop till FUTEX_WAIT och FUTEX_WAKE, medan användning av FUTEX_SWAP gör att en operation kan slutföras 5-10 gånger snabbare.

Google har börjat öppna implementeringen av M:N-flödesmodellen

I dagsläget används främst flödesmodellerna 1:1 och N:1 i praktiken. 1:1-modellen används i NPTL (POSIX-trådar) och LinuxThreads, och innebär en direkt mappning av en användarutrymmestråd till en tråd (enhet för exekveringsschemaläggning) på kärnnivån. N:1-modellen är implementerad i GNU Pth, för trådschemaläggning till användarutrymmet och tillåter N användarutrymmestrådar att binda till en enda tråd i kärnan, utan att kärnan vet om användartrådar.

Den största nackdelen med 1:1-modellen är den stora omkostnaden för kontextväxling mellan kärna och användarutrymme. N:1-modellen löser detta problem, men skapar ett nytt - eftersom en tråd i kärnan är en odelbar enhet för exekveringsschemaläggning, kan användartrådar som är bundna till en enda tråd i operativsystemets kärna inte skalas över CPU-kärnor och bindas till en enda CPU-kärna.

M:N-modellen är hybrid och åtgärdar alla ovanstående nackdelar genom att mappa N användarutrymmestrådar till M kärntrådar, vilket både minskar kontextväxlingsoverhead och skalning över CPU-kärnor. Priset för det här alternativet är den stora komplikationen av implementeringen av trådschemaläggaren i användarutrymmet och behovet av mekanismer för att koordinera åtgärder med kärnplaneraren.

Källa: opennet.ru

Lägg en kommentar