Google M:N жіп үлгісін енгізуді аша бастады

Google ұсынды Linux ядросына M:N ағынды моделінің жұмысын қамтамасыз ету үшін қажетті компоненттерді іске асырумен патчтардың бірінші жинағын қосу. Google бастамасы жабық есіктерде дамып келе жатқан API ашумен байланысты Ауыстыру M:N ағын үлгісін пайдалана отырып, пайдаланушы кеңістігінде іске асырылған көп ағынды ішкі жүйенің жұмысын қамтамасыз ететін Linux ядросы үшін. Ішкі жүйені Google ең аз кідірістерді қажет ететін қызметтердің жұмысын қамтамасыз ету үшін пайдаланады. Жіпті таратуды жоспарлау және басқару толығымен пайдаланушы кеңістігінде орындалады, бұл жүйелік шақырулардың орындалуын азайту арқылы контекстті ауыстыру операцияларының санын айтарлықтай азайтуы мүмкін.

Көрсетілген ішкі жүйенің жұмысын Linux ядросы деңгейінде қамтамасыз ету үшін үш негізгі операцияны ұсынатын SwitchTo API енгізілді - күту, жалғастыру және ауыстыру (ауысу). Ядроға қосу үшін 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 моделі бұл мәселені шешеді, бірақ жаңасын жасайды – ядродағы ағын орындалуды жоспарлаудың бөлінбейтін бірлігі болғандықтан, операциялық жүйе ядросындағы бір ағынмен байланыстырылған пайдаланушы ағындары процессордың өзектері бойынша масштабталмайды және аяқталады. бір CPU ядросы.

M:N моделі гибридті болып табылады және пайдаланушы кеңістігіндегі N ағындарын ОЖ ядросындағы M ағындарына салыстыру арқылы жоғарыда сипатталған барлық кемшіліктерді жояды, бұл контекстті ауыстырудың үстеме шығындарын азайтуға және процессор өзектері бойынша масштабтауды қамтамасыз етуге мүмкіндік береді. Бұл опцияның құны пайдаланушы кеңістігінде ағынды жоспарлаушыны енгізудің үлкен күрделілігі және ядро ​​жоспарлаушысымен әрекеттерді үйлестіру механизмдерінің қажеттілігі болып табылады.

Ақпарат көзі: opennet.ru

пікір қалдыру