Fast Kernel Headers, seti yezvigamba zvinomhanyisa kuunganidzwa kwe kernel ne50-80%

Ingo Molnar, mugadziri anozivikanwa weLinux kernel uye munyori weCFS Task Scheduler inokurudzirwa kuLinux kernel yekuvandudza tsamba yetsamba hurukuro inoteedzana zvigamba, izvo zvinokanganisa zvinopfuura hafu yemafaira ese mu kernel sosi uye inopa kuwedzera kweiyo yakazara kernel kuvakazve kumhanya kwe50 -80% zvichienderana nekugadziriswa.

Iyo inoshandiswa optimization inocherechedzwa nekuti yakabatana nekuwedzera kweiyo yakakura seti yekuchinja munhoroondo yekukura kwekernel: vakagadzirira kuisa 2297 zvigamba panguva imwe chete, vachichinja zvinopfuura zviuru makumi maviri neshanu mafaira.

Performance gain inowanikwa nekushandura iyo musoro faira kubata nzira. Izvo zvinofanirwa kucherechedzwa kuti pamusoro pemakore makumi matatu ekukura kwekernel, mamiriro emusoro mafaira atora chimiro chinoodza mwoyo nekuda kwekuvapo kwenhamba yakawanda yekuchinjika-kutenderera pakati pemafaira.

Kugadziriswa kwemafaira emusoro kwakatora anopfuura gore uye zvaida kugadziriswa kwakakosha kwehutungamiriri uye zvinotsamira. Munguva yekugadziridza, basa rakaitwa kupatsanura mhando tsananguro uye maAPIs eakasiyana kernel subsystems.

Ndiri kufara kuzivisa yekutanga vhezheni yeruzhinji ye "Fast Kernel Headers" purojekiti yandanga ndichishanda kubva mukupera kwa2020, inova gadziriso yakazara yeLinux kernel header hierarchy uye header dependencies, ine kaviri chinangwa che:

- mhanyisa kernel kuvaka (zvese mhedziso uye yakawedzera nguva yekuvaka)

- kudhirowa kwe subsystem mhando uye API tsananguro kubva kune mumwe nemumwe

Sekuziva kwevazhinji vanogadzira kernel, kune zvingangoita ~10,000 main .h misoro muLinux kernel, mune inosanganisira / uye arch/*/include/ hierarchies. Kwemakore makumi matatu apfuura, vakashanduka kuita yakaoma uye inorwadza seti yekutsamira yatinodaidza nerudo kuti 'Dependency Hell'.

Pakati pezvakachinjwa ndezvi: kupatsanurwa kwemafaira emusoro wepamusoro-soro kubva kune mumwe nemumwe, kusasiya mabasa emukati anobatanidza mafaera emusoro, mepu yemafaira emusoro emhando uye maAPI, kupihwa kweseti yakaparadzana yemafaira emusoro (anenge 80 mafaera aive neasina kunanga anotsamira anokanganisa kusangana, kuburitswa kuburikidza nemamwe mafaera emusoro mafaera), otomatiki kuwedzera kwekuvimba. kuenda ku ".h" uye ".c" mafaira, nhanho-nhanho optimization yemafaira emusoro, kushandiswa kwe "CONFIG_KALLSYMS_FAST=y" modhi, kusarudzwa kubatanidzwa kwemafaira eC kuita mabhuroko egungano kuti kuderedze huwandu hwemafaira echinhu.

Semagumo, basa rakaitwa rakabvumirwa kuderedza ukuru hwemafaira emusoro akagadziriswapa post-preprocessing stage by 1-2 mirairo yehukuru.

  • Semuenzaniso, kusati kwaitwa optimization, kushandiswa kwemusoro faira "linux/gfp.h" kwakakonzera kuwedzera kwe13543 mitsara yekodhi uye kuisirwa 303 inotsamira misoro mafaira, uye mushure mekugadzirisa, ukuru hwakaderedzwa kusvika 181 mitsetse uye 26 mafaera anoenderana.
  • Mumwe muenzaniso: preprocessing iyo isina kuvharwa "kernel / pid.c" faira inobatanidza zviuru makumi mapfumbamwe nemana emitsara yekodhi, mizhinji yacho isingashandiswe mupid.c. Kuparadzanisa mafaira emusoro kwakatibvumira kuderedza kuwanda kwekodhi yakagadziriswa katatu, kuderedza nhamba yemitsara inoshandiswa kusvika ku94.

Apo kernel yakanyatsovakwazve ne "make -j96 vmlinux" murairo pane test system, kushandisa zvigamba kwakaratidza kuderedzwa kwenguva yekuvaka yebazi v5.16-rc7 kubva 231,34 kusvika 129,97, 15,5 seconds (kubva pa27,7 kusvika XNUMX). inovaka paawa) uye zvakare yakawedzera kugona kweCPU musimboti kushandiswa panguva yekuvaka.

Nekuwedzera kwekuvaka, iyo optimization maitiro inotonyanya kuoneka: nguva yekuvakazve kernel mushure mekuita shanduko kumafaira emusoro yakaderedzwa zvakanyanya (kubva pa112% kusvika 173%, zvichienderana nemusoro faira iri kuchinjwa).

Optimization iripo chete yeARM64, MIPS, Sparc, uye x86 (32-bit uye 64-bit) zvivakwa.

Zvakakwana kana iwe uchifarira kuziva zvakawanda nezvazvo, unogona kutarisa ruzivo mu inotevera chinongedzo.


Siya yako yekutaura

Your kero e havazobvumirwi ichibudiswa. Raida minda anozivikanwa ne *

*

*

  1. Inotarisira iyo data: Miguel Ángel Gatón
  2. Chinangwa cheiyo data: Kudzora SPAM, manejimendi manejimendi.
  3. Legitimation: Kubvuma kwako
  4. Kutaurirana kwedata
  5. Dhata yekuchengetedza: Dhatabhesi inobatwa neOccentus Networks (EU)
  6. Kodzero: Panguva ipi neipi iwe unogona kudzora, kupora uye kudzima ruzivo rwako