Un inseme di patch hè statu publicatu chì accelerà a custruzione di u kernel Linux da 50-80%

Ingo Molnar, un famosu sviluppatore di kernel Linux è autore di u pianificatore di attività CFS (Completely Fair Scheduler), hà prupostu per discussione nantu à a mailing list di sviluppatori di kernel Linux una seria di patch chì affettanu più di a mità di tutti i fugliali in i fonti di u kernel. furnisce un aumentu di a velocità di una ricustruzzione completa di u kernel da 50-80% secondu i paràmetri. L'ottimisazione implementata hè degne di nota in quantu hè assuciata cù l'aghjunzione di u più grande settore di cambiamenti in a storia di u sviluppu di u kernel - 2297 patches sò stati pruposti per l'inclusione in una volta, cambiendu più di 25 mila fugliali (10 mila file di header in u "include". /" è "arch/*/include/" directory "è 15 mila fugliali cù testi fonte).

U guadagnu di rendiment hè ottenutu da cambià u metudu di trasfurmà i fugliali di l'intestazione. Hè nutatu chì più di trent'anni di sviluppu di u kernel, u statu di i schedarii di l'intestazione hà pigliatu un aspettu deprimente per via di a prisenza di un gran numaru di dipendenze incruciate trà i schedari. A ristrutturazione di i fugliali di l'intestazione hà pigliatu più di un annu è necessitava una riformulazione significativa di a ghjerarchia è di e dipendenze. Durante a ristrutturazione, u travagliu hè statu fattu per separà definizioni di tipu è API per i diversi sottosistemi di kernel.

Trà i cambiamenti fatti: separà i fugliali d'intestazione d'altu livellu l'un l'altru, eliminendu e funzioni inline chì liganu i fugliali d'intestazione, separà i fugliali d'intestazione per i tipi è l'API, assicurendu l'assemblea separata di i fugliali di l'intestazione (circa 80 fugliali avianu dipendenze indirette chì interferiscenu cù l'assemblea, esposti à traversu). altri fugliali d'intestazione), l'aggiunta automatica di dipendenze à i schedari ".h" è ".c", ottimisazione passu per passu di i fugliali d'intestazione, usu di u modu "CONFIG_KALLSYMS_FAST = y", cunsulidazione selettiva di schedari C in blocchi di assemblea per riduce u numeru di schedarii d'ughjettu.

In u risultatu, u travagliu fattu hà permessu di riduce a dimensione di i fugliali di l'intestazione processati in u stadiu post-preprocessing da 1-2 ordini di grandezza. Per esempiu, prima di l'ottimisazione, utilizendu u file header "linux/gfp.h" hà risultatu in l'aghjunzione di 13543 linee di codice è l'inclusione di 303 file header dipendente, è dopu l'ottimisazione a dimensione hè stata ridutta à 181 linee è 26 schedarii dipendente. O un altru esempiu: quandu preprocessing u schedariu "kernel/pid.c" senza un patch, 94 mila linee di codice sò inclusi, a maiò parte di quale ùn hè micca utilizatu in pid.c. A separazione di i fugliali di l'intestazione hà permessu di riduce a quantità di codice processatu da trè volte, riducendu u numeru di linee processate à 36 mila.

Quandu u kernel hè statu ricustruitu cumplettamente cù u cumandimu "make -j96 vmlinux" in un sistema di teste, l'applicazione di patches hà dimustratu una riduzione di u tempu di creazione di u ramu v5.16-rc7 da 231.34 à 129.97 seconde (da 15.5 à 27.7 builds). per ora), è hà ancu aumentatu l'efficienza di l'usu di core CPU durante l'assemblee. Cù una custruzione incrementale, l'effettu di l'ottimisazione hè ancu più notu - u tempu di ricustruisce u kernel dopu avè fattu cambiamenti à i schedarii di l'intestazione hè diminuitu significativamente (da 112% à 173% secondu u schedariu di l'intestazione cambiatu). L'ottimisazioni sò attualmente dispunibili solu per l'architetture ARM64, MIPS, Sparc è x86 (32- è 64-bit).

Source: opennet.ru

Add a comment