Google komencis malfermi la efektivigon de la M:N-flua modelo

Guglo sugestis inkludi en la Linukso-kerno la unuan aron da flikoj kun la efektivigo de komponantoj necesaj por certigi la funkciadon de la M:N-fadena modelo. La iniciato de Google rilatas al la malfermo de API, kiu disvolviĝis malantaŭ fermitaj pordoj ŜanĝiAl por la Linukso-kerno, kiu disponigas operacion de plurfadena subsistemo efektivigita en uzantspaco, uzante la M:N-fadenadmodelon. La subsistemo estas uzata de Google por certigi la funkciadon de servoj, kiuj postulas minimumajn prokrastojn. Planado kaj administrado de fadendistribuo estas faritaj tute en uzantspaco, kiu povas signife redukti la nombron da kuntekstŝanĝaj operacioj minimumigante la ekzekuton de sistemvokoj.

Por certigi la funkciadon de la specifita subsistemo ĉe la Linukso-kerna nivelo, la SwitchTo API estis efektivigita, ofertante tri bazajn operaciojn - atendi, rekomenci kaj interŝanĝi (ŝanĝi). Por inkludo en la kerno, la kodo de nova operacio FUTEX_SWAP estas proponita, kompletigante FUTEX_WAIT kaj FUTEX_WAKE, kaj disponigas kadron por kreado de plurfadenaj bibliotekoj en uzantspaco. FUTEX_SWAP ankaŭ povas esti uzata por transdoni mesaĝojn inter taskoj, simile al RPC. Ekzemple, nuntempe, por transdoni mesaĝon inter taskoj, vi devas fari almenaŭ kvar vokojn al FUTEX_WAIT kaj FUTEX_WAKE, sed uzi FUTEX_SWAP permesos al vi elteni unu operacion, kiu estos plenumita 5-10 fojojn pli rapide.

Google komencis malfermi la efektivigon de la M:N-flua modelo

Nuntempe, 1:1 kaj N:1 flumodeloj estas plejparte uzitaj en praktiko. La modelo 1:1 estas uzata en NPTL (POSIX-riveretoj) kaj Linukso-Fadenoj, kaj implicas rektan mapadon de fadeno en uzantspaco al fadeno (unuo de ekzekutplanado) ĉe la kernnivelo. Modelo N:1 efektivigita en GNU Pth, alportas fadensendadon en uzantspacon kaj permesas al N-fadenoj en uzantspaco esti ligitaj al ununura fadeno en la kerno, sen la kerno havanta scion pri uzantfadenoj.

La ĉefa malavantaĝo de la modelo 1:1 estas la granda ŝarĝo de kunteksto ŝanĝanta inter la kerno kaj uzantspaco. La modelo N:1 solvas ĉi tiun problemon, sed kreas novan - ĉar fadeno en la kerno estas nedividebla unuo de ekzekutplanado, uzantfadenoj ligitaj al unu fadeno en la operaciuma kerno ne povas grimpi trans CPU-kernoj kaj finiĝas ligitaj al. ununura CPU-kerno.

La M:N-modelo estas hibrida kaj eliminas ĉiujn supre priskribitajn malavantaĝojn mapante N-fadenojn en uzantspaco al M-fadenoj en la OS-kerno, kio permesas kaj redukti la supraĵon de kuntekstŝanĝo kaj certigi skalon trans CPU-kernoj. La kosto de ĉi tiu opcio estas la granda komplekseco de efektivigado de fadenoplanilo en uzantspaco kaj la bezono de mekanismoj por kunordigi agojn kun la kernoplanilo.

fonto: opennet.ru

Aldoni komenton