Ir publicēts ielāpu komplekts, kas paātrina Linux kodola izveidi par 50–80%.

Ingo Molnar, labi pazīstams Linux kodola izstrādātājs un CFS (Completely Fair Scheduler) uzdevumu plānotāja autors, ierosināja diskusijai Linux kodola izstrādātāju adresātu sarakstā virkni ielāpu, kas ietekmē vairāk nekā pusi no visiem kodola avotos esošajiem failiem un nodrošina pilnīgas kodola atjaunošanas ātruma pieaugumu par 50–80% atkarībā no iestatījumiem. Ieviestā optimizācija ir ievērības cienīga ar to, ka tā ir saistīta ar lielākā izmaiņu kopuma pievienošanu kodola izstrādes vēsturē - iekļaušanai tika piedāvāti 2297 ielāpi uzreiz, mainot vairāk nekā 25 tūkstošus failu (10 tūkstoši galvenes failu /” un “arch/*/include/” direktorijus "un 15 tūkstoši failu ar avota tekstiem).

Veiktspējas pieaugums tiek panākts, mainot galvenes failu apstrādes metodi. Tiek atzīmēts, ka vairāk nekā trīsdesmit kodola izstrādes gadu laikā galvenes failu stāvoklis ir kļuvis nomācošs, jo starp failiem pastāv liels skaits savstarpēju atkarību. Galvenes faila pārstrukturēšana ilga vairāk nekā gadu, un tai bija nepieciešama būtiska hierarhijas un atkarību pārstrāde. Pārstrukturēšanas laikā tika veikts darbs, lai atdalītu tipu definīcijas un API dažādām kodola apakšsistēmām.

Starp veiktajām izmaiņām: augsta līmeņa galvenes failu atdalīšana viens no otra, iekļauto funkciju likvidēšana, kas saista galvenes failus, galvenes failu atdalīšana tipiem un API, galvenes failu atsevišķas montāžas nodrošināšana (apmēram 80 failiem bija netiešas atkarības, kas traucēja montāžu, atklātas caur citi galvenes faili), automātiska atkarību pievienošana “.h” un “.c” failiem, pakāpeniska galvenes failu optimizācija, režīma “CONFIG_KALLSYMS_FAST=y” izmantošana, selektīva C failu konsolidācija montāžas blokos, lai samazināt objektu failu skaitu.

Rezultātā paveiktais darbs ļāva samazināt pēcapstrādes posmā apstrādāto galvenes failu lielumu par 1–2 kārtībām. Piemēram, pirms optimizācijas, izmantojot galvenes failu “linux/gfp.h”, tika pievienotas 13543 koda rindiņas un iekļauti 303 atkarīgi galvenes faili, un pēc optimizācijas izmērs tika samazināts līdz 181 rindiņai un 26 atkarīgiem failiem. Vai cits piemērs: iepriekš apstrādājot failu “kernel/pid.c” bez ielāpa, tiek iekļauti 94 tūkstoši koda rindu, no kurām lielākā daļa netiek izmantota pid.c. Galvenes failu atdalīšana ļāva trīs reizes samazināt apstrādātā koda apjomu, samazinot apstrādāto rindu skaitu līdz 36 tūkstošiem.

Kad kodols tika pilnībā pārbūvēts ar komandu “make -j96 vmlinux” testa sistēmā, ielāpu pielietošana uzrādīja v5.16-rc7 zara izveides laika samazināšanos no 231.34 līdz 129.97 sekundēm (no 15.5 uz 27.7 versijām). stundā), kā arī palielināja CPU kodolu izmantošanas efektivitāti montāžas laikā. Ar pakāpenisku veidošanu 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ājies (no 112% līdz 173% atkarībā no maināmā galvenes faila). Pašlaik optimizācijas ir pieejamas tikai ARM64, MIPS, Sparc un x86 (32 un 64 bitu) arhitektūrām.

Avots: opennet.ru

Pievieno komentāru