Google-ը սկսել է բացել M:N հոսքի մոդելի ներդրումը

Google- ը առաջարկեց Linux-ի միջուկում ներառելու համար պատչերի առաջին փաթեթը՝ M:N թելերի մոդելի աշխատանքը ապահովելու համար անհրաժեշտ բաղադրիչների ներդրմամբ: Google-ի նախաձեռնությունը կապված է փակ դռների հետևում մշակված API-ի բացման հետ Անցնել Linux միջուկի համար, որն ապահովում է բազմաշերտ ենթահամակարգ, որն իրականացվում է օգտագործողի տարածքում, որն օգտագործում է M:N թելերի մոդելը: Ենթահամակարգն օգտագործվում է Google-ի կողմից՝ նվազագույն ուշացումներ պահանջող ծառայություններ մատուցելու համար: Թելերի բաշխման պլանավորումը և կառավարումը կատարվում է ամբողջությամբ օգտագործողի տարածքում, ինչը կարող է զգալիորեն նվազեցնել համատեքստային անջատիչների թիվը՝ նվազագույնի հասցնելով համակարգային զանգերի կատարումը:

Այս ենթահամակարգի շահագործումն ապահովելու համար SwitchTo API-ն ներդրվել է Linux միջուկի մակարդակում՝ առաջարկելով երեք հիմնական գործողություն՝ սպասել, վերսկսել և փոխանակել (փոխարկել): Միջուկում ներառելու համար առաջարկվում է նոր FUTEX_SWAP գործողության կոդը՝ լրացնելով FUTEX_WAIT և FUTEX_WAKE, և ապահովում է շրջանակ՝ օգտատերերի տարածքի բազմաշերտ գրադարաններ կառուցելու համար: FUTEX_SWAP-ը կարող է օգտագործվել նաև առաջադրանքների միջև հաղորդագրություններ փոխանցելու համար, որը նման է RPC-ին: Օրինակ, ներկայումս առաջադրանքների միջև հաղորդագրություն փոխանցելու համար պահանջվում է առնվազն չորս զանգ FUTEX_WAIT և FUTEX_WAKE, մինչդեռ FUTEX_SWAP-ի օգտագործումը թույլ կտա մեկ գործողություն կատարել 5-10 անգամ ավելի արագ:

Google-ը սկսել է բացել M:N հոսքի մոդելի ներդրումը

Ներկայումս պրակտիկայում հիմնականում կիրառվում են հոսքային 1:1 և N:1 մոդելները։ Օգտագործվում է 1:1 մոդելը NPTL (POSIX թելեր) և LinuxThreads, և ենթադրում է օգտատերերի տարածության թելի ուղիղ քարտեզագրում միջուկի մակարդակում գտնվող շարանը (կատարման պլանավորման միավոր): N:1 մոդելը ներդրված է GNU Pth, բերում է շղթաների պլանավորումը օգտագործողի տարածություն և թույլ է տալիս N օգտագործողի տարածության թելեր կապվել միջուկի մեկ շղթայի հետ՝ առանց միջուկը իմանալու օգտվողի թելերի մասին։

1:1 մոդելի հիմնական թերությունը կոնտեքստի մեծ գերբեռնվածությունն է միջուկի և օգտագործողի տարածության միջև: N:1 մոդելը լուծում է այս խնդիրը, բայց ստեղծում է նորը. քանի որ միջուկի շարանը կատարման ժամանակացույցի անբաժանելի միավոր է, օպերացիոն համակարգի միջուկի մեկ շղթայի հետ կապված օգտվողի թելերը չեն կարող մասշտաբավորվել պրոցեսորի միջուկներով և կապվել: մեկ պրոցեսորի միջուկ:

M:N մոդելը հիբրիդ է և անդրադառնում է վերը նշված բոլոր թերություններին` N userspace թելերը M միջուկի թելերի քարտեզագրմամբ, ինչպես կրճատելով համատեքստի անջատիչի գլխավերեւը, այնպես էլ մասշտաբով CPU միջուկների վրա: Այս տարբերակի գինը օգտագործողի տարածքում թելերի ժամանակացույցի ներդրման մեծ բարդությունն է և միջուկի ժամանակացույցի հետ գործողությունները համակարգելու մեխանիզմների անհրաժեշտությունը:

Source: opennet.ru

Добавить комментарий