'n Stel pleisters is gepubliseer wat die bou van die Linux-kern met 50-80% versnel

Ingo Molnar, 'n bekende Linux-kernontwikkelaar en skrywer van die CFS (Completely Fair Scheduler) taakskeduleerder, het vir bespreking op die Linux-kern ontwikkelaar poslys 'n reeks pleisters voorgestel wat meer as die helfte van alle lêers in die kernbronne raak en bied 'n toename in die spoed van 'n volledige kernherbou met 50-80%, afhangende van instellings. Die geïmplementeerde optimalisering is opmerklik omdat dit geassosieer word met die byvoeging van die grootste stel veranderinge in die geskiedenis van kernontwikkeling - 2297 kolle is voorgestel om gelyktydig ingesluit te word, wat meer as 25 duisend lêers verander (10 duisend koplêers in die "sluit in /” en “arch/*/include/”-gidse "en 15 duisend lêers met brontekste).

Die prestasiewins word behaal deur die metode van verwerking van koplêers te verander. Daar word opgemerk dat oor dertig jaar van kernontwikkeling, die toestand van die koplêers 'n neerdrukkende voorkoms aangeneem het as gevolg van die teenwoordigheid van 'n groot aantal kruisafhanklikhede tussen lêers. Die herstrukturering van die koplêer het meer as 'n jaar geneem en het aansienlike herbewerking van die hiërargie en afhanklikhede vereis. Tydens die herstrukturering is daar gewerk om tipe definisies en API's vir verskillende kernsubstelsels te skei.

Onder die veranderinge wat gemaak is: die skeiding van hoëvlak-koplêers van mekaar, die uitskakeling van inlynfunksies wat koplêers koppel, skeiding van koplêers vir tipes en API's, versekering van aparte samestelling van koplêers (ongeveer 80 lêers het indirekte afhanklikhede gehad wat met samestelling inmeng, blootgestel deur ander koplêers), outomatiese byvoeging van afhanklikhede tot “.h”- en “.c”-lêers, stap-vir-stap-optimering van koplêers, gebruik van die “CONFIG_KALLSYMS_FAST=y”-modus, selektiewe konsolidasie van C-lêers in samestellingsblokke om verminder die aantal objeklêers.

Gevolglik het die werk wat gedoen is dit moontlik gemaak om die grootte van koplêers wat tydens die na-voorverwerkingsfase verwerk is, met 1-2 ordes te verminder. Byvoorbeeld, voor optimalisering, het die gebruik van die koplêer “linux/gfp.h” gelei tot die byvoeging van 13543 reëls kode en die insluiting van 303 afhanklike koplêers, en na optimalisering is die grootte verminder tot 181 reëls en 26 afhanklike lêers. Of 'n ander voorbeeld: wanneer die lêer "kernel/pid.c" sonder 'n pleister vooraf verwerk word, is 94 duisend reëls kode ingesluit, waarvan die meeste nie in pid.c gebruik word nie. Deur die koplêers te skei, het dit moontlik gemaak om die hoeveelheid verwerkte kode met drie keer te verminder, wat die aantal verwerkte lyne tot 36 duisend verminder het.

Toe die kern heeltemal herbou is met die "maak -j96 vmlinux"-opdrag op 'n toetsstelsel, het die toepassing van pleisters 'n vermindering in die boutyd van die v5.16-rc7-tak getoon van 231.34 tot 129.97 sekondes (van 15.5 tot 27.7 bouwerk) per uur), en het ook die doeltreffendheid van die gebruik van SVE-kerne tydens samestellings verhoog. Met 'n inkrementele bou is die effek van optimalisering selfs meer opvallend - die tyd om die kern te herbou nadat veranderinge aan die koplêers gemaak is, het aansienlik afgeneem (van 112% tot 173% afhangende van die koplêer wat verander word). Optimalisasies is tans slegs beskikbaar vir ARM64, MIPS, Sparc en x86 (32- en 64-bis) argitekture.

Bron: opennet.ru

Voeg 'n opmerking