Google zahájil realizaci modelu proudů M:N

Společnost Google navrhla Pro zahrnutí do jádra Linux byl vyvinut první soubor patchů, který implementuje komponenty potřebné pro fungování modelu vláken M:N. Iniciativa Google je spojena s otevřením API, které se vyvíjelo za zavřenými dveřmi. SwitchTo pro jádro Linux, které zajišťuje fungování vícethreadového subsystému implementovaného v prostoru uživatele, používajícího model vláken M:N. Tento subsystém je využíván v Google pro zajištění fungování služeb, které vyžadují minimální latence. Plánování a řízení rozdělení vláken se provádí zcela v uživatelském prostoru, což výrazně snižuje počet operací přepínání kontextu minimalizací provádění systémových volání.

Pro zajištění fungování uvedeného subsystému na úrovni jádra Linux byl implementován API SwitchTo, který nabízí tři základní operace — wait, resume a swap (přepnout). Pro zahrnutí do jádra byl navržen kód nové operace FUTEX_SWAP, která doplňuje FUTEX_WAIT a FUTEX_WAKE, a poskytuje základ pro vytváření vícethreadových knihoven v uživatelském prostoru. FUTEX_SWAP lze také využít pro přenos zpráv mezi úlohami, podobně jako RPC. Například v současnosti vyžaduje přenos zprávy mezi úlohami provedení minimálně čtyř volání FUTEX_WAIT a FUTEX_WAKE, použití FUTEX_SWAP však umožní provést jednu operaci, která bude provedena 5-10krát rychleji.

Google zahájil realizaci modelu proudů M:N

V současnosti se v praxi používají převážně modely vláken 1:1 a N:1. Model 1:1 se používá v NPTL (POSIX vlákna) a LinuxThreads, a znamená přímé mapování vlákna v uživatelském prostoru na vlákno (jednotku plánování provádění) na úrovni jádra. Model N:1 je implementován v GNU Pth, přenáší řízení vláken do uživatelského prostoru a umožňuje N vláknům v uživatelském prostoru připojit se k jednomu vláknu v jádru, přičemž jádro nemá informace o uživatelských vláknech.

Hlavním nedostatkem modelu 1:1 jsou vysoké režijní náklady na přepínání kontextu mezi jádrem a uživatelským prostorem. Model N:1 tuto problematiku řeší, ale vytváří novou — jelikož tok v jádře je nedělitelnou jednotkou plánování provádění, nemohou se uživatelské toky, které jsou navázány na jeden tok v jádře operačního systému, škálovat na jádrech CPU a zůstávají svázány s jedním jádrem CPU.

Model M:N je hybridní a odstraňuje všechny výše uvedené nedostatky díky mapování N toků v uživatelském prostoru na M toků v jádře OS, což umožňuje jak snížit režijní náklady na přepínání kontextu, tak zajistit škálování na jádrech CPU. Cenou za tuto variantu je velká složitost implementace plánovače toků v uživatelském prostoru a potřeba mechanismů ke koordinaci činností s plánovačem jádra.

Přehrát video

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster