Gisugdan na sa Google ang pag-abli sa pagpatuman sa M:N flow model

Google gisugyot aron ilakip sa Linux kernel ang unang set sa mga patch nga adunay pagpatuman sa mga sangkap nga gikinahanglan aron maseguro ang operasyon sa M:N threading model. Ang inisyatiba sa Google adunay kalabotan sa pag-abli sa usa ka API nga nag-uswag luyo sa mga sirado nga pultahan SwitchTo alang sa Linux kernel, nga naghatag og operasyon sa usa ka multi-threaded subsystem nga gipatuman sa user space, gamit ang M:N threading model. Ang subsystem gigamit sa Google aron masiguro ang operasyon sa mga serbisyo nga nanginahanglan gamay nga paglangan. Ang pag-iskedyul ug pagdumala sa pag-apod-apod sa hilo gihimo sa hingpit sa wanang sa tiggamit, nga mahimo’g makunhuran ang gidaghanon sa mga operasyon sa pagbalhin sa konteksto pinaagi sa pagminus sa pagpatuman sa mga tawag sa sistema.

Aron masiguro ang operasyon sa gipiho nga subsystem sa lebel sa kernel sa Linux, gipatuman ang SwitchTo API, nga nagtanyag sa tulo ka sukaranan nga mga operasyon - paghulat, pagpadayon ug pag-swap (pagbalhin). Alang sa paglakip sa kernel, ang code sa usa ka bag-ong operasyon nga FUTEX_SWAP gisugyot, nga nagsuporta FUTEX_WAIT ug FUTEX_WAKE, ug naghatag og gambalay sa paghimo og multi-threaded nga mga librarya sa user space. Ang FUTEX_SWAP mahimo usab nga gamiton sa pagbalhin sa mga mensahe tali sa mga buluhaton, susama sa RPC. Pananglitan, sa pagkakaron, aron mabalhin ang usa ka mensahe tali sa mga buluhaton, kinahanglan nimo nga buhaton ang labing menos upat ka mga tawag sa FUTEX_WAIT ug FUTEX_WAKE, apan ang paggamit sa FUTEX_SWAP magtugot kanimo nga makaagi sa usa ka operasyon, nga makompleto 5-10 ka beses nga mas paspas.

Gisugdan na sa Google ang pag-abli sa pagpatuman sa M:N flow model

Sa pagkakaron, ang 1: 1 ug N: 1 nga mga modelo sa dagan kasagarang gigamit sa praktis. Ang 1: 1 nga modelo gigamit sa NPTL (POSIX sapa) ug LinuxThreads, ug nagpasabot ug direktang pagmapa sa usa ka thread sa user space ngadto sa thread (unit sa execution scheduling) sa kernel level. Model N:1 gipatuman sa GNU Pth, nagdala sa thread dispatching ngadto sa user space ug nagtugot sa N thread sa user space nga mahigot sa usa ka thread sa kernel, nga walay kernel nga adunay kahibalo sa user thread.

Ang nag-unang disbentaha sa 1: 1 nga modelo mao ang dako nga overhead sa konteksto nga pagbalhin tali sa kernel ug user space. Ang N: 1 nga modelo nagsulbad niini nga problema, apan nagmugna og bag-o - tungod kay ang usa ka thread sa kernel usa ka dili mabahin nga yunit sa pag-iskedyul sa pagpatuman, ang mga thread sa user nga gihigot sa usa ka thread sa operating system kernel dili makasukod sa mga CPU cores ug matapos nga gihigot sa usa ka CPU core.

Ang modelo sa M:N hybrid ug gitangtang ang tanan nga gihulagway sa ibabaw nga mga disbentaha pinaagi sa pagmapa sa mga N thread sa espasyo sa gumagamit ngadto sa mga thread sa M sa OS kernel, nga nagtugot sa duha nga makunhuran ang overhead sa pagbalhin sa konteksto ug aron masiguro ang pag-scale sa mga cores sa CPU. Ang gasto sa kini nga kapilian mao ang dako nga pagkakomplikado sa pagpatuman sa usa ka thread scheduler sa user space ug ang panginahanglan alang sa mga mekanismo sa pag-coordinate sa mga aksyon uban sa kernel scheduler.

Source: opennet.ru

Idugang sa usa ka comment