Ātrās kodola galvenes — ielāpu komplekts, kas paātrina kodola apkopošanu par 50–80%

Ingo Molnārs, labi zināms Linux kodola izstrādātājs un CFS uzdevumu plānotāja autors Linux kodola izstrādes adresātu saraksta diskusijai tika piedāvāti vairāki ielāpi, kas ietekmē vairāk nekā pusi no visiem kodola avota failiem un nodrošina vispārēju kodola atjaunošanas ātruma pieaugumu par 50–80% atkarībā no konfigurācijas.

Optimizācija ieviesta ir ievērojams ar to, ka tas ir saistīts ar lielākās izmaiņu kopas pievienošanu kodola izstrādes vēsturē: viņi paredzēja uzreiz iekļaut 2297 ielāpus, mainot vairāk nekā 25 tūkstošus failu.

Veiktspējas pieaugums tiek panākts, mainot galvenes failu apstrādes metodi. Jāatzīmē, ka trīsdesmit kodola izstrādes gadu laikā galvenes failu stāvoklis ir ieguvis bēdīgu formu, jo starp failiem pastāv liels skaits savstarpēju atkarību.

Galvenes failu pārstrukturēšana ilga vairāk nekā gadu un bija nepieciešama būtiska hierarhijas un atkarību pārveidošana. Pārstrukturēšanas laikā tika veikts darbs, lai atdalītu tipu definīcijas un API dažādām kodola apakšsistēmām.

Ar prieku paziņoju par sava jaunā "Ātro kodola galvenes" projekta pirmo publisko versiju, pie kuras esmu strādājis kopš 2020. gada beigām. Tā ir visaptveroša Linux kodola galvenes hierarhijas un galvenes atkarību pārstrāde ar dubultu mērķi:

- paātrināt kodola veidošanu (gan absolūto, gan pakāpenisko būvēšanas laiku)

- tipa apakšsistēmas un definīciju API atsaiste viena no otras

Kā zina vairums kodola izstrādātāju, Linux kodolā ir aptuveni 10,000 30 galveno .h galvenes iekļaut / un arch / * / include / hierarhijās. Pēdējo XNUMX+ gadu laikā tās ir kļuvušas par sarežģītu un sāpīgu savstarpēju atkarību kopumu, ko mēs sirsnīgi saucam par “atkarības elli”.

Starp veiktajām izmaiņām ir: augsta līmeņa galvenes failu atdalīšana vienu no otra, iekļauto funkciju izslēgšana, kas saista galvenes failus, galvenes failu kartēšana tipiem un API, atsevišķa galvenes failu kopas nodrošināšana (apmēram 80 failiem bija netiešas atkarības, kas traucē montāžu, atklātas, izmantojot citus failu galvenes failus), automātiska atkarību pievienošana ".h" un ".c" faili, soli pa solim galvenes failu optimizācija, "CONFIG_KALLSYMS_FAST = y" režīma izmantošana, selektīva C failu konsolidācija montāžas blokos, lai samazinātu objektu failu skaitu.

Kā rezultātā, paveiktais darbs ļāva samazināt apstrādāto galvenes failu izmēruspēcapstrādes stadijā par 1-2 kārtām.

  • Piemēram, pirms optimizācijas, izmantojot galvenes failu "linux / gfp.h", tika pievienotas 13543 303 koda rindas un iekļauti 181 atkarīgi galvenes faili, un pēc optimizācijas izmērs tika samazināts līdz 26 rindiņai un XNUMX atkarīgiem failiem.
  • Vēl viens piemērs: neapstrādātā "kernel / pid.c" faila pirmapstrāde savieno 94 tūkstošus koda rindu, no kurām lielākā daļa netiek izmantota pid.c. Galvenes failu sadalīšana ļāva mums trīs reizes samazināt apstrādātā koda daudzumu, samazinot apstrādāto rindu skaitu līdz 36 XNUMX.

Kad kodols tika pilnībā pārbūvēts ar komandu "make -j96 vmlinux" testa sistēmā, labošana uzrādīja v5.16-rc7 zara kompilēšanas laika samazināšanos no 231,34 uz 129,97 15,5 sekundēm (no 27,7 uz XNUMX būvēm vienā versijā). stundu), kā arī palielināja CPU kodola izmantošanas efektivitāti veidošanas laikā.

Izmantojot pakāpenisku kompilāciju, optimizācijas efekts ir vēl pamanāmāks: kodola atjaunošanas laiks pēc izmaiņu veikšanas galvenes failos ir ievērojami samazināts (no 112% līdz 173%, atkarībā no mainītā galvenes faila).

Pašlaik optimizācijas ir pieejamas tikai ARM64, MIPS, Sparc un x86 (32 bitu un 64 bitu) arhitektūrām.

Smalki ja jūs interesē uzzināt vairāk par to, sīkāku informāciju varat pārbaudīt šī saite.


Atstājiet savu komentāru

Jūsu e-pasta adrese netiks publicēta. Obligātie lauki ir atzīmēti ar *

*

*

  1. Atbildīgais par datiem: Migels Ángels Gatóns
  2. Datu mērķis: SPAM kontrole, komentāru pārvaldība.
  3. Legitimācija: jūsu piekrišana
  4. Datu paziņošana: Dati netiks paziņoti trešām personām, izņemot juridiskus pienākumus.
  5. Datu glabāšana: datu bāze, ko mitina Occentus Networks (ES)
  6. Tiesības: jebkurā laikā varat ierobežot, atjaunot un dzēst savu informāciju.