Google tau pib qhib qhov kev siv ntawm M:N flow model

Google qhia kom suav nrog hauv Linux kernel thawj txheej thaj ua rau thaj nrog kev siv cov khoom tsim nyog los xyuas kom meej tias kev ua haujlwm ntawm M: N threading qauv. Google txoj kev pib muaj feem cuam tshuam nrog kev qhib API uas tab tom txhim kho tom qab kaw qhov rooj Hloov rau rau Linux kernel, uas muab kev ua haujlwm ntawm ntau txoj xov subsystem siv hauv cov neeg siv qhov chaw, siv M: N threading qauv. Lub subsystem yog siv los ntawm Google kom ntseeg tau tias kev ua haujlwm ntawm cov kev pabcuam uas yuav tsum tau qeeb qeeb. Teem sijhawm thiab kev tswj cov xov xa tawm yog ua tiav tag nrho hauv cov neeg siv qhov chaw, uas tuaj yeem txo tus naj npawb ntawm cov ntsiab lus hloov pauv kev ua haujlwm los ntawm kev txo qis kev ua tiav ntawm kev hu xov tooj.

Txhawm rau kom ntseeg tau tias kev ua haujlwm ntawm cov txheej txheem subsystem tau teev tseg ntawm qib Linux kernel, SwitchTo API tau siv, muab peb txoj haujlwm yooj yim - tos, rov pib dua thiab sib pauv (hloov). Rau kev suav nrog hauv cov ntsiav, cov cai ntawm kev ua haujlwm tshiab FUTEX_SWAP tau thov, ua kom tiav FUTEX_WAIT thiab FUTEX_WAKE, thiab muab lub moj khaum rau kev tsim cov tsev qiv ntawv ntau cov xov hauv cov neeg siv qhov chaw. FUTEX_SWAP kuj tseem siv tau los hloov cov lus ntawm cov haujlwm, zoo ib yam li RPC. Piv txwv li, tam sim no, txhawm rau hloov cov lus ntawm cov haujlwm, koj yuav tsum ua yam tsawg kawg plaub hu rau FUTEX_WAIT thiab FUTEX_WAKE, tab sis siv FUTEX_SWAP yuav tso cai rau koj los ntawm ib qho haujlwm, uas yuav ua tiav 5-10 zaug sai dua.

Google tau pib qhib qhov kev siv ntawm M:N flow model

Tam sim no, 1: 1 thiab N: 1 flow qauv yog siv nyob rau hauv kev xyaum. Tus qauv 1: 1 yog siv rau hauv NPTL (POSIX ntws) thiab LinuxThreads, thiab implies ib daim ntawv qhia ncaj qha ntawm cov xov nyob rau hauv cov neeg siv qhov chaw mus rau ib tug xov (unit ntawm execution teem sij hawm) nyob rau hauv lub kernel theem. Qauv N: 1 siv nyob rau hauv GNU Pth, nqa xov xa mus rau hauv cov neeg siv qhov chaw thiab tso cai rau N threads nyob rau hauv cov neeg siv qhov chaw yuav tsum tau khi rau ib leeg xov nyob rau hauv lub kernel, tsis muaj lub kernel muaj kev paub txog cov neeg siv threads.

Lub ntsiab tsis zoo ntawm tus qauv 1: 1 yog qhov loj nyiaj siv ua haujlwm ntawm cov ntsiab lus hloov pauv ntawm cov ntsiav thiab cov neeg siv qhov chaw. Tus qauv N: 1 daws qhov teeb meem no, tab sis tsim ib qho tshiab - txij li cov xov nyob rau hauv cov ntsiav yog ib qho kev tsis sib haum xeeb ntawm kev teem caij ua tiav, cov neeg siv xov khi rau ib qho xov hauv lub operating system kernel tsis tuaj yeem ntsuas hla CPU cores thiab xaus rau khi rau. ib tug CPU core.

Tus qauv M: N yog hybrid thiab tshem tawm tag nrho cov lus piav qhia saum toj no tsis zoo los ntawm daim phiaj N threads hauv cov neeg siv qhov chaw rau M threads hauv OS kernel, uas tso cai rau ob qho tib si txo cov nyiaj siv ua haujlwm ntawm cov ntsiab lus hloov pauv thiab xyuas kom muaj kev ntsuas thoob plaws CPU cores. Tus nqi ntawm qhov kev xaiv no yog qhov nyuaj heev ntawm kev siv lub xov tooj teem sijhawm hauv cov neeg siv qhov chaw thiab qhov xav tau rau cov txheej txheem los koom tes ua haujlwm nrog lub sijhawm teem sijhawm.

Tau qhov twg los: opennet.ru

Ntxiv ib saib