Linux yadrosini yaratishni 50-80% ga tezlashtiradigan yamoqlar to'plami nashr etildi.

Taniqli Linux yadrosini ishlab chiquvchisi va CFS (Completely Fair Scheduler) vazifalarni rejalashtiruvchisi muallifi Ingo Molnar Linux yadrosini ishlab chiquvchisining pochta ro'yxatida muhokama qilish uchun yadro manbalari va yadrolaridagi barcha fayllarning yarmidan ko'piga ta'sir qiluvchi bir qator yamoqlarni taklif qildi. sozlamalarga qarab yadroni to'liq qayta tiklash tezligini 50-80% ga oshirishni ta'minlaydi. Amalga oshirilgan optimallashtirish yadro rivojlanishi tarixidagi eng katta o'zgarishlar to'plamining qo'shilishi bilan bog'liqligi bilan ajralib turadi - bir vaqtning o'zida 2297 mingdan ortiq fayllarni o'zgartirgan holda 25 ta yamoq taklif qilindi ("shu jumladan 10 ming sarlavha fayli" /” va “arch/*/include/” kataloglari va manba matnlari bilan 15 ming fayl).

Ishlash samaradorligi sarlavha fayllarini qayta ishlash usulini o'zgartirish orqali erishiladi. Qayd etilishicha, o‘ttiz yillik yadro rivojlanishi davomida fayllar o‘rtasida ko‘p sonli o‘zaro bog‘liqliklar mavjudligi sababli sarlavhali fayllar holati tushkun ko‘rinishga ega bo‘lgan. Sarlavha faylini qayta qurish bir yildan ortiq davom etdi va ierarxiya va bog'liqliklarni sezilarli darajada qayta ishlashni talab qildi. Qayta qurish jarayonida turli yadro quyi tizimlari uchun turdagi ta'riflar va APIlarni ajratish bo'yicha ishlar olib borildi.

Kiritilgan o'zgarishlar orasida: yuqori darajali sarlavha fayllarini bir-biridan ajratish, sarlavha fayllarini bog'laydigan inline funktsiyalarini yo'q qilish, sarlavha fayllarini turlar va APIlar uchun ajratish, sarlavha fayllarini alohida yig'ishni ta'minlash (taxminan 80 ta faylda yig'ilishga to'sqinlik qiladigan bilvosita bog'liqliklar mavjud edi, ular orqali ta'sir ko'rsatildi. boshqa sarlavha fayllari), “.h” va “.c” fayllariga bogʻliqliklarni avtomatik qoʻshish, sarlavha fayllarini bosqichma-bosqich optimallashtirish, “CONFIG_KALLSYMS_FAST=y” rejimidan foydalanish, C fayllarini yigʻish bloklariga tanlab birlashtirish. ob'ekt fayllari sonini kamaytirish.

Natijada, bajarilgan ishlar dastlabki ishlov berishdan keyingi bosqichda qayta ishlangan sarlavhali fayllar hajmini 1-2 darajaga qisqartirish imkonini berdi. Masalan, optimallashtirishdan oldin “linux/gfp.h” sarlavha faylidan foydalanish natijasida 13543 qator kod qo‘shildi va 303 ta bog‘liq sarlavha fayli qo‘shildi, optimallashtirishdan so‘ng esa hajmi 181 qator va 26 ta bog‘liq faylga qisqartirildi. Yoki boshqa misol: “kernel/pid.c” faylini yamoqsiz oldindan qayta ishlashda 94 ming satr kod kiritilgan, ularning aksariyati pid.c da ishlatilmaydi. Sarlavha fayllarini ajratish qayta ishlangan kodlar miqdorini uch baravar kamaytirishga, qayta ishlangan satrlar sonini 36 mingtaga kamaytirishga imkon berdi.

Yadro test tizimida "make -j96 vmlinux" buyrug'i bilan to'liq qayta qurilganida, yamoqlarni qo'llash v5.16-rc7 filialini qurish vaqtini 231.34 dan 129.97 soniyagacha (15.5 dan 27.7 ga) qisqartirishini ko'rsatdi. soatiga), shuningdek, yig'ish paytida CPU yadrolaridan foydalanish samaradorligini oshirdi. Qo'shimcha qurilish bilan optimallashtirishning ta'siri yanada sezilarli bo'ladi - sarlavha fayllariga o'zgartirish kiritilgandan so'ng yadroni qayta qurish vaqti sezilarli darajada kamaydi (sarlavha fayli o'zgartirilayotganiga qarab 112% dan 173% gacha). Optimallashtirish hozircha faqat ARM64, MIPS, Sparc va x86 (32 va 64 bit) arxitekturalari uchun mavjud.

Manba: opennet.ru

a Izoh qo'shish