ලිනක්ස් කර්නලය ගොඩනැගීම 50-80% කින් වේගවත් කරන පැච් කට්ටලයක් ප්‍රකාශයට පත් කර ඇත.

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

මූලාශ්රය: opennet.ru

අදහස් එක් කරන්න