Маҷмӯи часпакҳо нашр шуданд, ки сохтани ядрои Linux-ро 50-80% суръат мебахшанд

Инго Молнар, як таҳиягари маъруфи ядрои Linux ва муаллифи ҷадвали вазифаҳои CFS (Completely Fair Scheduler), барои муҳокима дар феҳристи почтаи таҳиягари ядрои Linux як қатор часбҳоро пешниҳод кард, ки беш аз нисфи ҳамаи файлҳои манбаъҳои ядро ​​ва афзоиши суръати азнавсозии пурраи ядроро вобаста ба танзимот 50-80% таъмин кунед. Оптимизатсияи амалӣ аз он ҷиҳат қобили таваҷҷӯҳ аст, ки он илова кардани маҷмӯи бузургтарин тағиротро дар таърихи рушди ядро ​​​​дар назар дорад - якбора 2297 часбҳо барои дохил кардан пешниҳод карда шуданд, ки беш аз 25 ҳазор файлро иваз мекунанд (10 ҳазор файлҳои сарлавҳа дар "include/" ва "arch/*/include/" директорияҳо "ва 15 ҳазор файл бо матнҳои сарчашма).

Афзоиши кор тавассути тағир додани усули коркарди файлҳои сарлавҳа ба даст оварда мешавад. Қайд карда мешавад, ки дар тӯли сӣ соли рушди ядро ​​​​ҳолати файлҳои сарлавҳа аз сабаби мавҷудияти шумораи зиёди вобастагии байни файлҳо намуди рӯҳафтодакунанда гирифтааст. Таҷдиди сохтори файли сарлавҳа зиёда аз як сол тӯл кашид ва коркарди назарраси иерархия ва вобастагиҳоро талаб мекард. Дар рафти таҷдиди сохтор корҳо оид ба ҷудо кардани таърифҳои намудҳо ва APIҳо барои зерсистемаҳои гуногуни ядро ​​анҷом дода шуданд.

Дар байни тағиротҳои воридшуда: ҷудо кардани файлҳои сарлавҳаи сатҳи баланд аз ҳамдигар, аз байн бурдани функсияҳои дохилӣ, ки файлҳои сарлавҳаро мепайвандад, ҷудо кардани файлҳои сарлавҳа барои намудҳо ва APIҳо, таъмини ҷамъбасти алоҳидаи файлҳои сарлавҳа (тақрибан 80 файл вобастагии ғайримустақим доштанд, ки ба ассамблея халал мерасонанд, ки тавассути онҳо фош карда мешаванд) дигар файлҳои сарлавҳа), иловаи автоматии вобастагӣ ба файлҳои ".h" ва ".c", оптимизатсияи зина ба зина файлҳои сарлавҳа, истифодаи режими "CONFIG_KALLSYMS_FAST=y", муттаҳидсозии интихобии файлҳои C ба блокҳои монтажӣ шумораи файлҳои объектиро кам кунед.

Дар натиҷа, кори анҷомдода имкон дод, ки андозаи файлҳои сарлавҳаи дар марҳилаи пас аз коркард коркардшуда 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-бит) дастрасанд.

Манбаъ: opennet.ru

Илова Эзоҳ