Microsoft hapi kodin e sistemit të shpërndarjes së memories mimalloc

Kompania Microsoft hap codin e bibliotekës nën licencën MIT mimalloc me implementimin e sistemit të shpërndarjes së memories, e krijuar fillimisht për komponentët runtime të gjuhëve Koka dhe Lean. Mimalloc është i përshtatshëm për t'u përdorur në aplikacione standarde pa ndryshime në kodin e tyre dhe mund të veprojë si një zëvendësim transparent i funksionit malloc. Mbështetet në Windows, macOS, Linux, BSD dhe sisteme të tjera si Unix.

Veçoria kyçe e mimalloc është kompaktësia e implementimit (më pak se 3500 rreshta kod) dhe performanca shumë e lartë. Në testet e kryera mimalloc ka tejkaluar performancën e të gjitha bibliotekave konkurruese për shpërndarjen e memories, duke përfshirë jemalloc, tcmalloc, snmalloc, rpmalloc dhe Hoard.

PĂ«r vlerĂ«simin e performancĂ«s Ă«shtĂ« pĂ«rdorur njĂ« grup testesh standarde tashmĂ« ekzistuese NĂ« disa teste, mimalloc tejkalon sistemet e tjera me pĂ«rmasa, pĂ«r shembull, nĂ« testin e migracionit tĂ« objekteve midis proceseve, mimalloc rezultoi mĂ« i shpejtĂ« se tcmalloc dhe jemalloc mĂ« shumĂ« se 2.5 herĂ«. NĂ« tĂ« njĂ«jtĂ«n kohĂ«, nĂ« shumicĂ«n e testeve Đ°ĐœĐ°Đ»Ń–Đ·ŃƒĐ”Ń‚ŃŃ edhe konsumi mĂ« i ulĂ«t i memories, nĂ« disa situata, shpenzimi i memories arrin tĂ« ulet me 25%. Performanca e lartĂ« arrihet kryesisht pĂ«rmes aplikimit tĂ« segmentimit tĂ« listĂ«s sĂ« blloqeve tĂ« lirĂ« (free list sharding). NĂ« vend tĂ« njĂ« liste tĂ« madhe, mimalloc pĂ«rdor ndarjen nĂ« njĂ« seri listash mĂ« tĂ« vogla, secila prej tĂ« cilave lidhet me njĂ« faqe memories. Ky qasje zvogĂ«lon fragmentimin dhe rrit lokalizimin e tĂ« dhĂ«nave nĂ« memorie. Faqja e memories kuptohet si njĂ« grup i blloqeve qĂ« janĂ« tĂ« ngjashme nĂ« madhĂ«si. NĂ« sistemet 64-bit, madhĂ«sia e faqes zakonisht Ă«shtĂ« 64 KB. NĂ« rast se nĂ« faqe nuk mbeten blloqe tĂ« zĂ«na, ajo lirohet plotĂ«sisht duke kthyer memorien te sistemi operativ, çka ndihmon nĂ« uljen e shpenzimeve tĂ« memories dhe fragmentimin nĂ« programe qĂ« punojnĂ« pĂ«r njĂ« kohĂ« tĂ« gjatĂ«.

Microsoft hapi kodin e sistemit të shpërndarjes së memories mimalloc

Bibliotekën mund ta lidhni në fazën e lidhjes ose ta ngarkoni për një program tashmë të ndërtuar ("LD_PRELOAD=\/usr\/bin\/libmimalloc.so myprogram"). Në bibliotekë gjithashtu ofrohet

Biblioteka mund të lidhet gjatë fazës së lidhjes ose të ngarkohet për një program të prekur tashmë ("LD_PRELOAD=\usr\bin\libmimalloc.so myprogram"). Biblioteka gjithashtu ofron API për integrimin e funksionalitetit në runtime dhe menaxhimin e hollësishëm të sjelljes, për shembull, për lidhjen e trajtuesve të çlirimit të vonuar të memories dhe rritjes monotone të numrave të referenceve. Ekziston mundësia e krijimit dhe përdorimit në aplikacion të disa 'kupave' (heap) për shpërndarjen në zona të ndryshme të memories. Po ashtu është e mundur çlirimi i kupës në tërësi, pa përshkrim dhe çlirimin e veçantë të objekteve që ndodhen në të.

ËshtĂ« parashikuar mundĂ«sia e ndĂ«rtimit tĂ« bibliotekĂ«s nĂ« modalitetin e sigurt, nĂ« tĂ« cilin nĂ« kufijtĂ« e blloqeve bĂ«het zĂ«vendĂ«simi i faqeve speciale mbrojtĂ«se tĂ« memories (guard-page), si dhe pĂ«rdoret randomizimi i shpĂ«rndarjes sĂ« blloqeve dhe enkriptimi i listave tĂ« blloqeve tĂ« çliruara. Masa tĂ« tilla lejojnĂ« bllokimin e shumicĂ«s sĂ« teknikave tipike tĂ« shfrytĂ«zimit tĂ« mbushjes sĂ« tamponit nĂ« heap. NĂ«se aktivizohet modaliteti i sigurt, performanca bie me rreth 3%.

Nga veçoritë e mimalloc, theksohet gjithashtu se nuk është e ndjeshme ndaj problemeve të fryrjes në fragmentimin e madh. Në skenarin më të keq, konsumimi i memories rritet me 0.2% për metadata dhe mund të arrijë deri në 16.7% për memorien e shpërndarë. Për të shmangur konfliktet gjatë qasjes në burime, mimalloc përdor vetëm operacione atomike.

Burimi: opennet.ru

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster