Google on aloittanut M:N-virtausmallin toteutuksen avaamisen

Google ehdotti sisällyttämään Linux-ytimeen ensimmäiset korjaustiedostot, joissa on toteutettu M: N säikeistysmallin toiminnan varmistamiseksi tarvittavat komponentit. Googlen aloite liittyy suljettujen ovien takana kehitetyn API:n avaamiseen Vaihtaa Linux-ytimelle, joka tarjoaa monisäikeisen alijärjestelmän, joka on toteutettu käyttäjätilassa ja joka käyttää M: N säikeistysmallia. Google käyttää alajärjestelmää tarjotakseen palveluita, jotka vaativat vähäisiä viiveitä. Säikeen jakelun ajoitus ja hallinta suoritetaan kokonaan käyttäjätilassa, mikä voi merkittävästi vähentää kontekstin vaihtojen määrää minimoimalla järjestelmäkutsujen suorittamisen.

Tämän alijärjestelmän toiminnan varmistamiseksi SwitchTo API otettiin käyttöön Linux-ytimen tasolla, joka tarjoaa kolme perustoimintoa - odotus, jatka ja swap (switching). Ytimeen sisällytettäväksi ehdotetaan koodia uudelle FUTEX_SWAP-operaatiolle, joka täydentää FUTEX_WAIT ja FUTEX_WAKEja tarjoaa puitteet monisäikeisten käyttäjätilakirjastojen rakentamiseen. FUTEX_SWAP:ia voidaan käyttää myös viestien välittämiseen tehtävien välillä, kuten RPC. Esimerkiksi tällä hetkellä viestin siirtämiseen tehtävien välillä tarvitaan vähintään neljä kutsua FUTEX_WAIT- ja FUTEX_WAKE-soittimille, kun taas FUTEX_SWAP-toiminnolla yksi toiminto voidaan suorittaa 5-10 kertaa nopeammin.

Google on aloittanut M:N-virtausmallin toteutuksen avaamisen

Tällä hetkellä käytännössä käytetään pääasiassa virtausmalleja 1:1 ja N:1. 1:1 mallia käytetään NPTL (POSIX-langat) ja Linux-säikeet, ja se tarkoittaa käyttäjäavaruussäikeen suoraa yhdistämistä säikeeseen (suorituksen ajoitusyksikkö) ydintasolla. N:1-malli on toteutettu GNU Pth, tuo säikeiden ajoituksen käyttäjätilaan ja sallii N käyttäjätilan säiettä sitoutua yhteen säikeeseen ytimessä ilman, että ydin tietää käyttäjäsäikeistä.

1:1-mallin suurin haittapuoli on suuri ylimääräinen kontekstin vaihtaminen ytimen ja käyttäjätilan välillä. N:1-malli ratkaisee tämän ongelman, mutta luo uuden - koska ytimen säie on jakamaton suorituksen ajoituksen yksikkö, käyttöjärjestelmän ytimen yhteen säikeeseen sidotut käyttäjäsäikeet eivät voi skaalata prosessorin ytimien yli ja tulla sidottuiksi yksi CPU-ydin.

M:N-malli on hybridi ja korjaa kaikki edellä mainitut haitat yhdistämällä N käyttäjätilan säiettä M ytimen säikeisiin, mikä sekä vähentää kontekstin vaihtamisen ylimääräistä kustannuksia että skaalausta prosessoriytimien välillä. Tämän vaihtoehdon hinta on suuri monimutkaisuus säikeen ajoittimen toteuttamisessa käyttäjätilassa ja mekanismien tarve toimintojen koordinoimiseksi ytimen ajoittimen kanssa.

Lähde: opennet.ru

Lisää kommentti