Ядро компиляциясын тездетүү үчүн патчтардын топтому жарыяланды. Linux 50-80% га

Инго Молнар, белгилүү иштеп чыгуучу Linux kernel жана CFS (Толугу менен адилеттүү пландаштыргыч) тапшырма пландаштыргычынын автору аны ядро ​​​​иштеп чыгуучулардын почта тизмесинде талкуулоо үчүн сунуштаган. Linux Ядронун баштапкы кодундагы бардык файлдардын жарымынан көбүнө таасир эткен жана жөндөөлөргө жараша ядрону толук кайра куруу ылдамдыгын 50-80% га жогорулатууну камсыз кылган бир катар патчтар. Бул оптималдаштыруу ядрону иштеп чыгуу тарыхындагы эң чоң өзгөрүүлөрдүн топтомун камтыгандыктан, ал өзгөчөлөнүп турат — бир эле учурда кошуу үчүн сунушталган 2297 патч, 25 000ден ашык файлды өзгөрттү ("include/" жана "arch/*/include/" каталогдорундагы 10 000 баш файл жана 15 000 баштапкы код файлы).

Өндүрүмдүүлүктүн жогорулашына баш файлдарды иштетүү ыкмасын өзгөртүү аркылуу жетишилет. Ядронун өнүгүшүнүн отуз жылдан ашык убакытында файлдардын ортосунда көп сандагы кайчылаш көз карандылыктын болушунан улам баш файлдардын абалы көңүл чөгүүчү көрүнүшкө ээ болгондугу белгиленген. Баш файлды реструктуризациялоо бир жылдан ашык убакытты алды жана иерархияны жана көз карандылыкты олуттуу түрдө кайра иштетүүнү талап кылды. Реструктуризациялоонун жүрүшүндө ар кандай ядронун подсистемалары үчүн типтин аныктамаларын жана API'лерди бөлүү боюнча иштер жүргүзүлдү.

Киргизилген өзгөрүүлөрдүн арасында: жогорку деңгээлдеги баш файлдарды бири-биринен бөлүү, баш файлдарды байланыштырган саптык функцияларды жок кылуу, баш файлдарды типтерге жана API'лерге бөлүү, баш файлдарды өзүнчө чогултууну камсыз кылуу (80ге жакын файлда монтажга тоскоолдук кылган кыйыр көз карандылыктар болгон, алар аркылуу ачыкка чыккан башка баш файлдар), “.h” жана “.c” файлдарына көз карандылыктарды автоматтык түрдө кошуу, баш файлдарды этап-этабы менен оптималдаштыруу, “CONFIG_KALLSYMS_FAST=y” режимин колдонуу, С файлдарын монтаж блокторуна тандап консолидациялоо объект файлдарынын санын кыскартуу.

Натыйжада, аткарылган иштер алдын ала кайра иштетүү стадиясында иштетилген баш файлдардын көлөмүн 1-2 даражага кыскартууга мүмкүндүк берди. Мисалы, оптималдаштыруудан мурун "linux/gfp.h" баш файлын колдонуу 13543 сап кодду жана 303 көз каранды баш файлды кошууга алып келди, ал эми оптималдаштыруудан кийин өлчөмү 181 сапка жана 26 көз каранды файлга чейин кыскарган. Же дагы бир мисал: “kernel/pid.c” файлын патчсыз алдын ала иштетүүдө 94 миң сап код киргизилет, алардын көбү pid.cте колдонулбайт. Баш файлдарды бөлүү иштетилген коддун көлөмүн үч эсе кыскартууга, иштетилген саптардын санын 36 миңге чейин кыскартууга мүмкүндүк берди.

Сыноо системасындагы "make -j96 vmlinux" буйругу менен ядро ​​толугу менен кайра курулганда, патчтарды колдонуу v5.16-rc7 бутагынын куруу убактысын 231.34 секунддан 129.97 секундага (15.5тен 27.7ге чейин) кыскарткан. саатына), ошондой эле чогултуу учурунда CPU өзөктөрүн колдонуунун натыйжалуулугун жогорулатты. Кошумча куруу менен оптималдаштыруунун эффектиси дагы байкалат - баш файлга өзгөртүүлөрдү киргизгенден кийин ядрону кайра куруу убактысы бир топ кыскарды (өзгөрүлүп жаткан баш файлга жараша 112%дан 173%ке чейин). Учурда оптималдаштыруу ARM64, MIPS, Sparc жана x86 (32 жана 64 бит) архитектуралары үчүн гана жеткиликтүү.

Source: opennet.ru

DDoS коргоосу, VPS VDS серверлери бар сайттар үчүн ишенимдүү хостинг сатып алыңыз 🔥 DDoS коргоосу, VPS VDS серверлери бар ишенимдүү веб-сайт хостингин сатып алыңыз | ProHoster