லினக்ஸ் கர்னலின் உருவாக்கத்தை 50-80% விரைவுபடுத்தும் இணைப்புகளின் தொகுப்பு வெளியிடப்பட்டுள்ளது.

இங்கோ மோல்னார், நன்கு அறியப்பட்ட லினக்ஸ் கர்னல் டெவலப்பர் மற்றும் CFS (முற்றிலும் நியாயமான திட்டமிடுபவர்) பணி அட்டவணையின் ஆசிரியர், Linux கர்னல் டெவலப்பர் அஞ்சல் பட்டியலில் விவாதிக்க முன்மொழிந்தார், இது கர்னல் மூலங்களில் உள்ள அனைத்து கோப்புகளிலும் பாதிக்கும் மேலான இணைப்புகளை பாதிக்கும். அமைப்புகளைப் பொறுத்து ஒரு முழுமையான கர்னலின் மறுகட்டமைப்பின் வேகத்தை 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

கருத்தைச் சேர்