Joukko korjaustiedostoja on julkaistu, jotka nopeuttavat Linux-ytimen rakentamista 50-80 %.

Ingo Molnar, tunnettu Linux-ytimen kehittäjä ja CFS (Completely Fair Scheduler) -tehtävien ajoitusohjelman kirjoittaja, ehdotti keskustelua varten Linux-ytimen kehittäjien postituslistalle sarjaa korjaustiedostoja, jotka vaikuttavat yli puoleen kaikista ytimen lähteissä olevista tiedostoista. lisää ytimen täydellisen uudelleenrakentamisen nopeutta 50-80 % asetuksista riippuen. Toteutettu optimointi on huomionarvoista, koska se liittyy ytimen kehityksen historian suurimman joukon muutosten lisäämiseen - 2297 korjausta ehdotettiin sisällytettäväksi kerralla, mikä muutti yli 25 tuhatta tiedostoa (10 tuhatta otsikkotiedostoa /" ja "arch/*/include/" hakemistot "ja 15 tuhatta tiedostoa lähdeteksteineen).

Suorituskyvyn lisäys saavutetaan muuttamalla otsikkotiedostojen käsittelytapaa. On huomattava, että yli 30 vuoden ytimen kehittämisen aikana otsikkotiedostojen tila on saanut masentavan ulkonäön tiedostojen välisten suurien ristiriippuvuuksien vuoksi. Otsikkotiedostojen uudelleenjärjestely kesti yli vuoden ja vaati huomattavaa hierarkian ja riippuvuuksien muokkaamista. Uudelleenjärjestelyn aikana työstettiin eri ytimen alijärjestelmien tyyppimäärittelyjä ja API:ita.

Tehdyt muutokset: korkean tason otsikkotiedostojen erottaminen toisistaan, otsikkotiedostoja linkittävien rivitoimintojen poistaminen, otsikkotiedostojen erottaminen tyypeille ja API:ille, otsikkotiedostojen erillisen kokoamisen varmistaminen (noin 80 tiedostossa oli kokoonpanoa häiritseviä epäsuoria riippuvuuksia, jotka paljastettiin muut otsikkotiedostot), riippuvuuksien automaattinen lisääminen .h- ja .c-tiedostoihin, otsikkotiedostojen vaiheittainen optimointi, CONFIG_KALLSYMS_FAST=y-tilan käyttö, C-tiedostojen valikoiva yhdistäminen kokoonpanolohkoihin vähentää objektitiedostojen määrää.

Tuloksena tehdyllä työllä on mahdollista pienentää esikäsittelyvaiheessa käsiteltyjen otsikkotiedostojen kokoa 1-2 suuruusluokkaa. Esimerkiksi ennen optimointia otsikkotiedoston ”linux/gfp.h” käyttö johti 13543 koodirivin lisäykseen ja 303 riippuvan otsikkotiedoston sisällyttämiseen, ja optimoinnin jälkeen kokoa pienennettiin 181 riviin ja 26 riippuvaan tiedostoon. Tai toinen esimerkki: kun esikäsitellään tiedostoa “kernel/pid.c” ilman korjaustiedostoa, mukana tulee 94 tuhatta koodiriviä, joista suurinta osaa ei käytetä pid.c:ssä. Otsikkotiedostojen erottaminen mahdollisti käsitellyn koodin määrän vähentämisen kolme kertaa, jolloin käsiteltyjen rivien määrä väheni 36 tuhanteen.

Kun ydin rakennettiin kokonaan uudelleen komennolla "make -j96 vmlinux" testijärjestelmässä, korjaustiedostojen käyttö osoitti v5.16-rc7-haaran rakennusajan lyhenemisen 231.34 sekunnista 129.97 sekuntiin (15.5:stä 27.7:ään). tunnissa) ja lisäsi myös CPU-ytimien käytön tehokkuutta kokoonpanojen aikana. Inkrementaalisen koontiversion avulla optimoinnin vaikutus on vieläkin havaittavampi - ytimen uudelleen rakentamiseen kuluva aika otsikkotiedostoihin tehtyjen muutosten jälkeen on lyhentynyt merkittävästi (112 %:sta 173 %:iin riippuen muutettavasta otsikkotiedostosta). Optimoinnit ovat tällä hetkellä saatavilla vain ARM64-, MIPS-, Sparc- ja x86 (32- ja 64-bittinen) arkkitehtuureille.

Lähde: opennet.ru

Lisää kommentti