மைக்ரோசாப்ட் மைமல்லோக் நினைவக ஒதுக்கீடு முறைக்கான குறியீட்டைத் திறந்துள்ளது

மைக்ரோசாப்ட் MIT உரிமத்தின் கீழ் ஒரு நூலகத்தைத் திறந்துள்ளது mmaloc மொழிகளின் இயக்க நேரக் கூறுகளுக்காக முதலில் உருவாக்கப்பட்ட நினைவக ஒதுக்கீடு முறையின் செயலாக்கங்களிலிருந்து Koka и லீன். Mimalloc அவற்றின் குறியீட்டை மாற்றாமல் நிலையான பயன்பாடுகளில் பயன்படுத்துவதற்கு ஏற்றது மற்றும் malloc செயல்பாட்டிற்கு ஒரு வெளிப்படையான மாற்றாக செயல்பட முடியும். விண்டோஸ், மேகோஸ், லினக்ஸ், பிஎஸ்டி மற்றும் பிற யூனிக்ஸ் போன்ற சிஸ்டங்களில் வேலை செய்வதை ஆதரிக்கிறது.

மைமல்லாக்கின் முக்கிய அம்சம் அதன் கச்சிதமான செயலாக்கம் (3500 வரிகளுக்கு குறைவான குறியீடு) மற்றும் மிக உயர்ந்த செயல்திறன் ஆகும். IN சோதனைகள் நடத்தப்பட்டன mimalloc அனைத்து போட்டி நினைவக ஒதுக்கீடு நூலகங்களையும் விஞ்சியது, உட்பட ஜெமல்லோக், tcmalloc, snmalloc, rpmalloc и பதுக்கல்.

செயல்திறனை மதிப்பிட, ஏற்கனவே உள்ள ஒரு தொகுப்பு நிலையான சோதனைகள் சில சோதனைகளில், மற்ற அமைப்புகளை விட மிமாலோக் பல மடங்கு வேகமானது; எடுத்துக்காட்டாக, வெவ்வேறு இழைகளுக்கு இடையில் பொருள் இடம்பெயர்வு சோதனையில், tcmalloc மற்றும் jemalloc ஐ விட mimalloc 2.5 மடங்கு வேகமாக இருந்தது. அதே நேரத்தில், பெரும்பாலான சோதனைகளில், குறைந்த நினைவக நுகர்வு காணப்படுகிறது; சில சூழ்நிலைகளில், நினைவக நுகர்வு 25% குறைக்கப்படலாம்.

மைக்ரோசாப்ட் மைமல்லோக் நினைவக ஒதுக்கீடு முறைக்கான குறியீட்டைத் திறந்துள்ளது

உயர் செயல்திறன் முக்கியமாக இலவச பட்டியல் பகிர்வைப் பயன்படுத்துவதன் மூலம் அடையப்படுகிறது. ஒரு பெரிய பட்டியலுக்குப் பதிலாக, மிமாலோக் சிறிய பட்டியல்களின் வரிசையைப் பயன்படுத்துகிறது, அவை ஒவ்வொன்றும் நினைவகப் பக்கத்துடன் இணைக்கப்பட்டுள்ளன. இந்த அணுகுமுறை துண்டாடுதலைக் குறைக்கிறது மற்றும் நினைவகத்தில் தரவு இருப்பிடத்தை அதிகரிக்கிறது. நினைவகப் பக்கம் என்பது ஒரே அளவிலான தொகுதிகளின் தொகுப்பாகும். 64-பிட் கணினிகளில், பக்க அளவு பொதுவாக 64 KB ஆகும். பக்கத்தில் ஆக்கிரமிக்கப்பட்ட தொகுதிகள் எதுவும் இல்லை என்றால், அது முற்றிலும் விடுவிக்கப்பட்டு, நினைவகம் இயக்க முறைமைக்குத் திரும்பும், இது நீண்டகால நிரல்களில் நினைவக செலவுகள் மற்றும் துண்டு துண்டாக குறைக்கிறது.

நூலகத்தை இணைக்கும் கட்டத்தில் சேர்க்கலாம் அல்லது ஏற்கனவே கூடியிருந்த நிரலுக்கு ஏற்றலாம் (“LD_PRELOAD=/usr/bin/libmimalloc.so myprogram”). நூலகமும் வழங்குகிறது ஏபிஐ இயக்க நேரம் மற்றும் நுண்ணிய நடத்தைக் கட்டுப்பாட்டில் செயல்பாட்டை ஒருங்கிணைப்பதற்காக, எடுத்துக்காட்டாக, தாமதமான நினைவக வெளியீட்டு ஹேண்ட்லர்களை இணைப்பதற்கும் மற்றும் ஏகபோகமாக அதிகரிக்கும் குறிப்பு கவுண்டர்களுக்கும். வெவ்வேறு நினைவகப் பகுதிகளில் விநியோகிக்க ஒரு பயன்பாட்டில் பல "குவியல்களை" உருவாக்கி பயன்படுத்த முடியும். குவியலை முழுவதுமாக விடுவிப்பதும், அதன் வழியாகச் செல்லாமல், அதில் வைக்கப்பட்டுள்ள பொருட்களை தனித்தனியாக விடுவிக்கவும் முடியும்.

பாதுகாப்பான முறையில் நூலகத்தை உருவாக்க முடியும், இதில் சிறப்பு நினைவக சரிபார்ப்பு பக்கங்கள் (பாதுகாவலர்-பக்கங்கள்) தொகுதி எல்லைகளில் மாற்றப்படுகின்றன, மேலும் தொகுதி விநியோகத்தின் சீரற்றமயமாக்கல் மற்றும் விடுவிக்கப்பட்ட தொகுதிகளின் பட்டியல்களின் குறியாக்கம் ஆகியவை பயன்படுத்தப்படுகின்றன. இத்தகைய நடவடிக்கைகள் குவியல் அடிப்படையிலான இடையக வழிதல்களைப் பயன்படுத்துவதற்கான பொதுவான நுட்பங்களைத் தடுக்க உங்களை அனுமதிக்கின்றன. நீங்கள் பாதுகாப்பான பயன்முறையை இயக்கும் போது, ​​செயல்திறன் தோராயமாக 3% குறைகிறது.

மிமாலோக்கின் அம்சங்களில், பெரிய துண்டு துண்டாக இருப்பதால், வீக்கம் ஏற்படுவதில் சிக்கல்கள் ஏற்படாது என்பதும் குறிப்பிடத்தக்கது. மோசமான சூழ்நிலையில், மெட்டாடேட்டாவிற்கு நினைவக நுகர்வு 0.2% அதிகரிக்கிறது மற்றும் விநியோகிக்கப்பட்ட நினைவகத்திற்கு 16.7% ஐ அடையலாம். வளங்களை அணுகும் போது மோதல்களைத் தவிர்க்க, mimalloc அணு செயல்பாடுகளை மட்டுமே பயன்படுத்துகிறது.

ஆதாரம்: opennet.ru

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