Google začal otvárať realizáciu modelu tokov M:N.

Spoločnosť Google navrhla na zahrnutie do jadra Linux bol vyvinutý prvý súbor patchov implementujúcich komponenty potrebné na zabezpečenie fungovania modelu vlákien M:N. Iniciatíva Google súvisí s otvorením vyvíjaného API za zatvorenými dverami SwitchTo pre jadro Linux, ktoré zabezpečuje fungovanie implementovanej v používateľskom prostredí viacvláknovej subsystému využívajúceho model vlákien M:N. Subsystém sa používa v Google na zabezpečenie fungovania služieb vyžadujúcich minimálne oneskorenia. Plánovanie a správa distribúcie vlákien prebieha výhradne v používateľskom prostredí, čo umožňuje podstatne znížiť počet operácií prepínania kontextu minimalizovaním systémových volaní.

Na zabezpečenie fungovania uvedeného subsystému na úrovni jadra Linux bol realizovaný API SwitchTo, ponúkajúci tri základné operácie — wait, resume a swap (prepínanie). Na zaradenie do jadra bol navrhnutý kód novej operácie FUTEX_SWAP, ktorá dopĺňa FUTEX_WAIT a FUTEX_WAKE, a poskytuje základ pre vytváranie viacvláknových knižníc v používateľskom prostredí. FUTEX_SWAP môže byť tiež použitý na prenos správ medzi úlohami, analogicky k RPC. Napríklad v súčasnosti je na prenos správy medzi úlohami potrebné vykonať aspoň štyri volania FUTEX_WAIT a FUTEX_WAKE, pričom použitie FUTEX_SWAP umožní uskutočniť to jednou operáciou, ktorá sa vykoná 5-10 krát rýchlejšie.

Google začal otvárať realizáciu modelu tokov M:N.

V súčasnosti sa v praxi prevažne používajú modely vlákien 1:1 a N:1. Model 1:1 sa používa v NPTL (POSIX vlákna) a LinuxThreads, a znamená priame priradenie vlákna v používateľskom prostredí ku vlákne (jednotke plánovania vykonávania) na úrovni jadra. Model N:1 je realizovaný v GNU Pth, presúva plánovanie vlákien do používateľského prostredia a umožňuje N vlákon v používateľskom prostredí viazať na jedno vlákno v jadre, pričom jadro nemá informácie o používateľských vláknach.

Hlavnou nevýhodou modelu 1:1 sú vysoké režijné náklady na prepínanie kontextu medzi jadrom a používateľským priestorom. Model N:1 tento problém rieši, ale vytvára nový — pretože tok v jadre je nedeliteľnou jednotkou plánovania vykonávania, používateľské toky viazané na jeden tok v jadre operačného systému sa nemôžu škálovať na CPU jadrách a ostávajú viazané na jedno CPU jadro.

Model M:N je hybridný a odstraňuje všetky vyššie opísané nedostatky vďaka zladenie N tokov v používateľskom priestore s M tokmi v jadre OS, čo umožňuje znížiť režijné náklady na prepínanie kontextu a zabezpečiť škálovanie na CPU jadrách. Cenou za túto možnosť je veľká zložitost implementácie plánovača tokov v používateľskom priestore a potreba mechanizmov na zosúladenie akcií s plánovačom jadra.

Prehrajte video

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster