Google yatanga kuvhura kuita kweM:N kuyerera modhi

Google suggested kuisa muLinux kernel seti yekutanga yezvigamba nekushandiswa kwezvikamu zvinodikanwa kuti ive nechokwadi chekushanda kweM:N threading modhi. Danho reGoogle rine chekuita nekuvhurwa kweAPI yanga ichikura kuseri kwemagonhi akavharwa SwitchTo yeLinux kernel, iyo inopa kushanda kweyakawanda-yakarukwa subsystem inoshandiswa munzvimbo yevashandisi, uchishandisa iyo M:N yekuruka modhi. Iyo subsystem inoshandiswa neGoogle kuve nechokwadi chekushanda kwemasevhisi anoda kunonoka kudiki. Kuronga uye manejimendi ekugovera tambo kunoitwa zvachose munzvimbo yevashandisi, iyo inogona kuderedza zvakanyanya huwandu hwemamiriro ekuchinja mashandiro nekudzikisira kuita kwehurongwa hwekufona.

Kuti ive nechokwadi chekushanda kweiyo subsystem yakatsanangurwa paLinux kernel level, iyo SwitchTo API yakaitwa, ichipa matatu ekutanga mashandiro - kumirira, tangazve uye chinjana (kuchinja). Kuti isanganiswe mu kernel, kodhi yekushanda kutsva FUTEX_SWAP inokurudzirwa, inoenderana. FUTEX_WAIT neFUTEX_WAKE, uye inopa hurongwa hwekugadzira maraibhurari ane tambo dzakawanda munzvimbo yemushandisi. FUTEX_SWAP inogona zvakare kushandiswa kutumira mameseji pakati pemabasa, akafanana neRPC. Semuyenzaniso, pari zvino, kuendesa meseji pakati pemabasa, unofanirwa kufona kanenge mana kuFUTEX_WAIT neFUTEX_WAKE, asi kushandisa FUTEX_SWAP kuchakubvumidza kuti upfuure nekuvhiya kumwe chete, kunopedzwa ka5-10 nekukurumidza.

Google yatanga kuvhura kuita kweM:N kuyerera modhi

Parizvino, 1: 1 uye N: 1 kuyerera modhi inonyanya kushandiswa mukuita. Iyo 1: 1 modhi inoshandiswa mu NPTL (POSIX hova) uye LinuxTreads, uye zvinoreva mepu yakananga yeshinda munzvimbo yemushandisi kune shinda (chikamu chekuita kuronga) padanho re kernel. Model N:1 inoshandiswa mu GNU Pth, inounza tambo inotumirwa munzvimbo yemushandisi uye inobvumira tambo dzeN munzvimbo yemushandisi kuti dzisungirwe kune imwe shinda mu kernel, pasina kernel ine ruzivo rwemushandisi shinda.

Iyo yakanyanya kusarudzika yeiyo 1: 1 modhi ndiyo yakakura pamusoro peiyo mamiriro ekuchinja pakati pe kernel nenzvimbo yemushandisi. Iyo N: 1 modhi inogadzirisa dambudziko iri, asi inogadzira idzva - sezvo shinda mu kernel iri chikamu chisingaonekwe chekuuraya kuronga, tambo dzemushandisi dzakasungirirwa kune imwe shinda musystem yekushandisa kernel haigone kuyera CPU cores uye inoguma yakasungwa imwe CPU musimboti.

Iyo M: N modhi ndeye hybrid uye inobvisa zvese zvinotsanangurwa pamusoro pezvisina kunaka nekugadzira mepu yeN tambo munzvimbo yemushandisi kune M tambo muOS kernel, iyo inobvumira zvese kudzikisa pamusoro pekuchinja kwemamiriro uye kuve nechokwadi chekuyera muCPU cores. Mutengo weiyi sarudzo ndiko kuomarara kukuru kwekushandisa tambo scheduler munzvimbo yemushandisi uye kudiwa kwemaitiro ekubatanidza zviito nekernel scheduler.

Source: opennet.ru

Voeg