කීර්තිමත් සංවර්ධකයෙකු වන ඉන්ගෝ මොල්නාර් Linux කර්නලය සහ CFS (සම්පූර්ණයෙන්ම සාධාරණ කාලසටහන්කරු) කාර්ය කාලසටහනේ කතුවරයා, කර්නල් සංවර්ධකයින්ගේ තැපැල් ලැයිස්තුවේ සාකච්ඡා කිරීම සඳහා එය යෝජනා කළේය. Linux කර්නල් ප්රභව කේතයේ ඇති සියලුම ගොනු වලින් අඩකට වඩා බලපාන සහ සැකසුම් මත පදනම්ව සම්පූර්ණ කර්නල් නැවත ගොඩනැගීමේ වේගය 50-80% කින් වැඩි කරන පැච් මාලාවක්. මෙම ප්රශස්තිකරණය කැපී පෙනෙන්නේ එයට කර්නල් සංවර්ධන ඉතිහාසයේ විශාලතම වෙනස්කම් කට්ටලය ඇතුළත් වන බැවිනි - එකවර ඇතුළත් කිරීම සඳහා යෝජනා කර ඇති පැච් 2297, ගොනු 25 කට වඩා වෙනස් කිරීම ("include/" සහ "arch/*/include/" නාමාවලිවල ශීර්ෂ ගොනු 10 ක් සහ මූලාශ්ර කේත ගොනු 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-bit) ගෘහ නිර්මාණ ශිල්පය සඳහා පමණි.
මූලාශ්රය: opennet.ru
