Uudelleenkäynnistettävät sekvenssit”RSEQ”-järjestelmäkutsu sulautui muutama vuosi sitten Linux-ytimeen, ja nyt GNU C-kirjasto ja ystävät käyttävät sitä nopeampaan käyttäjätilan toimintaan prosessorikohtaisilla tiedoilla. Nyt ensi vuonna Linux 6.3:n kanssa tulee olemaan joitain merkittäviä lisäyksiä RSEQ-tukeen.
Uudelleenkäynnistettävät sekvenssit voivat tarjota suorituskykyetua upeilla vertailutuloksilla, koska ne välttävät atomioperaatioita esimerkiksi prosessorikohtaisten laskurien lisäämisessä, prosessorikohtaisten spinlockien muokkaamisessa, prosessorikohtaisiin rengaspuskureihin lukemisessa/kirjoittamisessa ja vastaavissa.
Mathieu Desnoyers, joka on johtanut suuren osan RSEQ-työstä, on viime aikoina työskennellyt laajentaakseen Restartable Sequences ABI:ta paljastaakseen NUMA-solmun ID-, mm_cid-ja mm_numa_cid-kentät. Desnoyers selitti korjaustiedostosarjan kanssa:
NUMA-solmun tunnus-kenttä mahdollistaa nopeamman getcpu(2):n toteuttamisen libc:ssä.
Muistikarttakohtainen samanaikaisuuden tunnus (mm_cid) mahdollistaa käyttäjätilan prosessorikohtaisten tietorakenteiden ihanteellisen skaalauksen (alas tai ylöspäin). Muistikartassa allokoituja samanaikaisuustunnuksia seuraa ajoittaja, joka ottaa huomioon samanaikaisesti käynnissä olevien säikeiden määrän ja ottaa siten implisiittisesti huomioon säikeiden määrän, prosessorin affiniteetin, näihin säikeisiin liittyvät cpusets ja loogisten ytimien lukumäärän. järjestelmässä.
NUMA-tietoinen samanaikaisuuden tunnus (mm_numa_cid) on samanlainen kuin mm_cid, paitsi että se pitää kirjaa NUMA-solmutunnuksista, joihin kukin cid on liitetty. Kun NUMA-järjestelmissä käyttäjäavaruus havaitsee NUMA-tietoisen samanaikaisuustunnuksen liittyvän NUMA-solmuun, NUMA-solmua ei taatusti muutu, ellei ydintason NUMA-konfiguraatiomuutosta tapahdu. Tämä on hyödyllistä NUMA-tietoisissa prosessorikohtaisissa tietorakenteissa, jotka toimivat ympäristöissä, joissa cpuset-sarjaan kuuluva prosessi tai prosessien joukko on kiinnitetty joukkoon ytimiä, jotka kuuluvat järjestelmän NUMA-solmujen osajoukkoon.
Erityisesti nopeamman getcpu():n mahdollisuus on erityisen hyödyllinen glibc-käyttäjille.
Tästä aamusta lähtien koodi, joka esittelee laajennettavan RSEQ ABI:n, lisää nämä uudet kentät ja muita RSEQ-parannuksia, on asetettu jonoon TIP:n sched/core-haaraan. Nyt kun Linux 6.2:n yhdistämisikkuna on takanamme, TIP Git-varasto alkaa vuorotellen jonottaa erilaisia ominaisuusmuutoksia lähetettäväksi Linux 6.3:n yhdistämisikkunaan, joka avautuu kahden kuukauden kuluttua.
Nämä RSEQ-lisäykset voidaan tarkistaa osoitteesta sched/core haara.