Google is begon mei it iepenjen fan de ymplemintaasje fan it M: N-flowmodel

Google suggerearre om yn 'e Linux-kernel de earste set patches op te nimmen mei de ymplemintaasje fan komponinten dy't nedich binne om de wurking fan it M: N-threadingmodel te garandearjen. It inisjatyf fan Google is relatearre oan de iepening fan in API dy't ûntwikkele efter sletten doarren. Oerskeakelje nei foar de Linux-kernel, dy't de operaasje leveret fan in multi-threaded subsysteem ymplementearre yn brûkersromte, mei it M: N-threadingmodel. It subsysteem wurdt brûkt troch Google om de wurking fan tsjinsten te garandearjen dy't minimale latency fereaskje. Planning en behear fan threadferdieling wurdt folslein yn brûkersromte útfierd, wat it oantal kontekstwikseloperaasjes signifikant kin ferminderje troch it minimalisearjen fan de útfiering fan systeemoproppen.

Om de wurking fan it oantsjutte subsysteem op it Linux-kernelnivo te garandearjen, waard de SwitchTo API ymplementearre, en biedt trije basisoperaasjes - wachtsje, ferfetsje en wikselje (wikselje). Foar opname yn 'e kearn wurdt de koade fan in nije operaasje FUTEX_SWAP foarsteld, oanfoljend FUTEX_WAIT en FUTEX_WAKE, en jout in ramt foar it meitsjen fan multi-threaded bibleteken yn brûkersromte. FUTEX_SWAP kin ek brûkt wurde om berjochten oer te dragen tusken taken, fergelykber mei RPC. Bygelyks, op it stuit, om in berjocht oer te setten tusken taken, moatte jo op syn minst fjouwer oproppen útfiere nei FUTEX_WAIT en FUTEX_WAKE, mar it brûken fan FUTEX_SWAP sil jo mei ien operaasje kinne komme, dy't 5-10 kear flugger sil wurde foltôge.

Google is begon mei it iepenjen fan de ymplemintaasje fan it M: N-flowmodel

Op it stuit, 1: 1 en N: 1 flow modellen wurde benammen brûkt yn de praktyk. It 1:1-model wurdt brûkt yn NPTL (POSIX-streamen) en LinuxThreads, en ymplisearret in direkte mapping fan in thread yn brûkersromte nei in thread (ienheid fan útfieringsplanning) op it kernelnivo. Model N: 1 ymplementearre yn GNU Pth.

It wichtichste neidiel fan it 1: 1-model is de grutte overhead fan kontekstwikseling tusken de kernel en brûkersromte. It N: 1-model lost dit probleem op, mar makket in nije ien - om't in thread yn 'e kearn in ûndielbere ienheid is fan útfieringsplanning, kinne brûkerstrieden bûn oan ien thread yn' e kernel fan it bestjoeringssysteem net skaalje oer CPU-kearnen en einigje bûn oan in inkele CPU kearn.

It M: N-model is hybride en elimineert alle hjirboppe beskreaune neidielen troch N-threads yn brûkersromte yn kaart te bringen nei M-threads yn 'e OS-kernel, wêrtroch sawol de overhead fan kontekstwikseling kin wurde fermindere as om skaalfergrutting oer CPU-kearnen te garandearjen. De kosten fan dizze opsje binne de grutte kompleksiteit fan it ymplementearjen fan in threadplanner yn brûkersromte en de needsaak foar meganismen om aksjes te koördinearjen mei de kernelplanner.

Boarne: opennet.ru

Add a comment