Eto awọn abulẹ kan ti ṣe atẹjade ti o yara kiko ekuro Linux nipasẹ 50-80%

Ingo Molnar, olupilẹṣẹ ekuro Linux ti a mọ daradara ati onkọwe ti oluṣeto iṣẹ ṣiṣe CFS (Ipilẹṣẹ Iṣeduro Patapata), dabaa fun ijiroro lori atokọ ifiweranṣẹ olupilẹṣẹ kernel Linux lẹsẹsẹ awọn abulẹ ti o kan diẹ sii ju idaji gbogbo awọn faili ni awọn orisun kernel ati pese ilosoke ninu iyara ti atunkọ ekuro pipe nipasẹ 50-80% da lori awọn eto. Imudara imuse jẹ akiyesi ni pe o ni nkan ṣe pẹlu afikun ti ṣeto awọn ayipada ti o tobi julọ ninu itan-akọọlẹ ti idagbasoke ekuro - awọn abulẹ 2297 ni a dabaa fun ifisi ni ẹẹkan, yiyipada diẹ sii ju awọn faili 25 ẹgbẹrun (awọn faili akọsori 10 ẹgbẹrun ninu “pẹlu pẹlu). /" ati "arch / * / pẹlu /" awọn ilana "ati awọn faili 15 ẹgbẹrun pẹlu awọn ọrọ orisun).

Ere iṣẹ jẹ aṣeyọri nipasẹ yiyipada ọna ti sisẹ awọn faili akọsori. O ṣe akiyesi pe ju ọgbọn ọdun ti idagbasoke ekuro, ipo ti awọn faili akọsori ti mu irisi ibanujẹ nitori wiwa ti nọmba nla ti awọn igbẹkẹle agbelebu laarin awọn faili. Atunto faili akọsori gba ọdun kan ati pe o nilo atunkọ pataki ti awọn ilana ati awọn igbẹkẹle. Lakoko atunto, iṣẹ ni a ṣe lati ya awọn asọye iru ati awọn API fun oriṣiriṣi awọn eto inu ekuro.

Lara awọn ayipada ti a ṣe: yiya sọtọ awọn faili akọsori ipele giga lati ara wọn, imukuro awọn iṣẹ inline ti o sopọ awọn faili akọsori, yiya sọtọ awọn faili akọsori fun awọn oriṣi ati awọn API, aridaju apejọ lọtọ ti awọn faili akọsori (nipa awọn faili 80 ni awọn igbẹkẹle aiṣe-taara ti o nfa pẹlu apejọpọ, ti o farahan nipasẹ awọn faili akọsori miiran), afikun aifọwọyi ti awọn igbẹkẹle si awọn faili “.h” ati “.c”, iṣapeye-igbesẹ-igbesẹ ti awọn faili akọsori, lilo ipo “CONFIG_KALLSYMS_FAST=y”, isọdọkan yiyan ti awọn faili C sinu awọn bulọọki apejọ si din awọn nọmba ti ohun faili.

Bi abajade, iṣẹ ti a ṣe jẹ ki o ṣee ṣe lati dinku iwọn awọn faili akọsori ti a ṣe ilana ni ipele ifiweranṣẹ-tẹlẹ nipasẹ awọn aṣẹ titobi 1-2. Fun apẹẹrẹ, ṣaaju iṣapeye, lilo faili akọsori “linux/gfp.h” yorisi ni afikun ti awọn laini koodu 13543 ati ifisi awọn faili akọsori 303 ti o gbẹkẹle, ati lẹhin iṣapeye iwọn ti dinku si awọn laini 181 ati awọn faili ti o gbẹkẹle 26. Tabi apẹẹrẹ miiran: nigbati o ba ṣaju faili “kernel/pid.c” laisi alemo kan, awọn laini koodu 94 ẹgbẹrun wa pẹlu, pupọ julọ eyiti a ko lo ni pid.c. Iyapa awọn faili akọsori jẹ ki o ṣee ṣe lati dinku iye koodu ti a ṣe ilana nipasẹ igba mẹta, dinku nọmba awọn laini ti a ṣe ilana si 36 ẹgbẹrun.

Nigbati ekuro naa ti tun tun ṣe pẹlu aṣẹ “ṣe -j96 vmlinux” lori eto idanwo kan, ohun elo ti awọn abulẹ fihan idinku ninu akoko kikọ ti ẹka v5.16-rc7 lati 231.34 si 129.97 awọn aaya (lati 15.5 si 27.7 kọ. fun wakati kan), ati tun pọ si ṣiṣe ti lilo awọn ohun kohun Sipiyu lakoko awọn apejọ. Pẹlu kikọ afikun, ipa ti iṣapeye paapaa jẹ akiyesi diẹ sii - akoko lati tun kọ ekuro lẹhin ṣiṣe awọn ayipada si awọn faili akọsori ti dinku ni pataki (lati 112% si 173% da lori faili akọsori ti yipada). Awọn iṣapeye lọwọlọwọ wa fun ARM64, MIPS, Sparc ati x86 (32- ati 64-bit) awọn faaji.

orisun: opennet.ru

Fi ọrọìwòye kun