Linux kernelaren eraikuntza % 50-80 bizkortzen duten adabaki sorta bat argitaratu da.

Ingo Molnar, Linux nukleoaren garatzaile ezagunak eta CFS (Completely Fair Scheduler) ataza-planifikatzailearen egileak, Linux nukleoaren garatzaileen posta-zerrendan eztabaidatzeko proposatu zuen nukleoaren iturrietako fitxategi guztien erdiari baino gehiagori eragiten dioten adabaki batzuk eta nukleo osoa berreraikitzeko abiadura % 50-80 handitzea ezarpenen arabera. Inplementatutako optimizazioa aipagarria da nukleoaren garapenaren historiako aldaketa multzo handiena gehitzearekin lotuta dagoelako - 2297 adabaki proposatu ziren aldi berean sartzea, 25 mila fitxategi baino gehiago aldatuz (10 mila goiburuko fitxategiak "barne". /” eta β€œarch/*/include/” direktorioetan β€œeta 15 mila fitxategi iturri-testuekin).

Errendimendu-irabazia goiburuko fitxategiak prozesatzeko metodoa aldatuz lortzen da. Kontuan izan da kernelaren garapenean hogeita hamar urte baino gehiagotan, goiburuko fitxategien egoerak itxura etsigarria hartu duela, fitxategien arteko menpekotasun gurutzatuen kopuru handia dagoelako. Goiburuko fitxategien berregituraketak urtebete baino gehiago behar izan zuen eta hierarkia eta mendekotasunen birmoldaketa nabarmena behar izan zuen. Berregituraketa garaian, nukleoaren azpisistema desberdinetarako mota definizioak eta APIak bereizteko lana egin zen.

Egindako aldaketen artean: goi-mailako goiburu-fitxategiak elkarrengandik bereiztea, goiburu-fitxategiak lotzen dituzten lerroko funtzioak ezabatzea, goiburu-fitxategiak moten eta APIen bereizketa, goiburu-fitxategien muntaketa bereizia bermatzea (80 fitxategi inguruk zeharkako mendekotasunak zituzten muntaia oztopatzen zutenak, bidez agerian utzita). goiburuko beste fitxategi batzuk), ".h" eta ".c" fitxategiei menpekotasunak automatikoki gehitzea, goiburuko fitxategiak urratsez urrats optimizatzea, "CONFIG_KALLSYMS_FAST=y" modua erabiltzea, C fitxategiak multzokatze blokeetan selektiboa finkatzea. objektu-fitxategien kopurua murriztu.

Ondorioz, egindako lanari esker, aurreprozesaketa osteko fasean prozesatutako goiburu-fitxategien tamaina 1-2 ordena txikitzea ahalbidetu zen. Esate baterako, optimizatu aurretik, "linux/gfp.h" goiburuko fitxategia erabiltzeak 13543 kode-lerro gehitzea eta menpeko 303 goiburu-fitxategiak sartzea eragin zuen, eta optimizatu ondoren tamaina 181 lerro eta 26 menpeko fitxategira murriztu zen. Edo beste adibide bat: β€œkernel/pid.c” fitxategia adabakirik gabe aurreprozesatzen denean, 94 mila kode lerro sartzen dira, gehienak ez dira pid.c-en erabiltzen. Goiburu-fitxategiak bereizteari esker, prozesatutako kodea hiru aldiz murriztu zen, prozesatutako lerro kopurua 36 milara murriztuz.

Nukleoa proba-sistema batean "make -j96 vmlinux" komandoarekin guztiz berreraiki zenean, adabakien aplikazioak v5.16-rc7 adarraren eraikitze-denbora murriztea erakutsi zuen 231.34-tik 129.97 segundora (15.5-tik 27.7-era). orduko), eta muntaketan CPU nukleoak erabiltzeko eraginkortasuna ere areagotu zuen. Eraikitze inkremental batekin, are nabarmenagoa da optimizazioaren eragina - goiburuko fitxategietan aldaketak egin ondoren nukleoa berriro eraikitzeko denbora nabarmen murriztu da (% 112tik % 173ra aldatzen den goiburuko fitxategiaren arabera). Optimizazioak ARM64, MIPS, Sparc eta x86 (32 eta 64 biteko) arkitekturetarako soilik daude eskuragarri.

Iturria: opennet.ru

Gehitu iruzkin berria