Microsoft imefungua msimbo wa mfumo wa ugawaji wa kumbukumbu ya mimalloc

Microsoft imefungua maktaba chini ya leseni ya MIT mmalloki kutoka kwa utekelezaji wa mfumo wa ugawaji kumbukumbu ulioundwa awali kwa vipengele vya wakati wa uendeshaji wa lugha Koka и Konda. Mimalloc imebadilishwa ili itumike katika programu za kawaida bila kubadilisha msimbo wao na inaweza kufanya kazi kama mbadala wa uwazi wa chaguo la kukokotoa la malloc. Inasaidia kazi kwenye Windows, macOS, Linux, BSD na mifumo mingine kama Unix.

Kipengele muhimu cha mimalloc ni utekelezaji wake wa compact (chini ya mistari 3500 ya kanuni) na utendaji wa juu sana. KATIKA vipimo vilivyofanywa mimalloc ilishinda maktaba zote za ugawaji kumbukumbu zinazoshindana, ikijumuisha jemalloc, tcmalloc, snmalloc, rpmalloc и Ufugaji.

Ili kutathmini utendaji, seti ya zilizopo vipimo vya kawaida Katika majaribio mengine, mimalloc ni haraka mara nyingi kuliko mifumo mingine; kwa mfano, katika jaribio la uhamishaji wa kitu kati ya nyuzi tofauti, mimalloc iligeuka kuwa zaidi ya mara 2.5 kuliko tcmalloc na jemalloc. Wakati huo huo, katika vipimo vingi, matumizi ya kumbukumbu ya chini pia huzingatiwa; katika hali nyingine, matumizi ya kumbukumbu yanaweza kupunguzwa kwa 25%.

Microsoft imefungua msimbo wa mfumo wa ugawaji wa kumbukumbu ya mimalloc

Utendaji wa juu unapatikana hasa kupitia matumizi ya kugawanya orodha ya bure. Badala ya orodha moja kubwa, mimalloc hutumia mfululizo wa orodha ndogo, ambayo kila moja inahusishwa na ukurasa wa kumbukumbu. Mbinu hii inapunguza mgawanyiko na huongeza eneo la data katika kumbukumbu. Ukurasa wa kumbukumbu ni seti iliyojumuishwa ya vizuizi vya ukubwa sawa. Kwenye mifumo ya 64-bit, saizi ya ukurasa kawaida ni 64 KB. Ikiwa hakuna vitalu vilivyochukuliwa vilivyobaki kwenye ukurasa, ni huru kabisa na kumbukumbu inarudi kwenye mfumo wa uendeshaji, ambayo inapunguza gharama za kumbukumbu na kugawanyika katika programu za muda mrefu.

Maktaba inaweza kujumuishwa katika hatua ya kuunganisha au kupakiwa kwa programu iliyokusanywa tayari (“LD_PRELOAD=/usr/bin/libmimalloc.so myprogram”). Maktaba pia hutoa API kwa kujumuisha utendakazi katika muda wa utekelezaji na udhibiti wa tabia ulioboreshwa, kwa mfano, kwa kuunganisha vidhibiti vya kutoa kumbukumbu vya uvivu na vihesabio vya marejeleo vinavyoongeza mara kwa mara. Inawezekana kuunda na kutumia "lundo" kadhaa katika programu kwa usambazaji katika maeneo tofauti ya kumbukumbu. Inawezekana pia kufungia lundo kabisa, bila kupitia na kufungia kando vitu vilivyowekwa ndani yake.

Inawezekana kujenga maktaba katika hali salama, ambayo kurasa maalum za kuangalia kumbukumbu (kurasa za walinzi) hubadilishwa kwenye mipaka ya kuzuia, na randomization ya usambazaji wa kuzuia na usimbuaji wa orodha ya vitalu vilivyoachiliwa hutumiwa. Hatua kama hizo hufanya iwezekane kuzuia mbinu za kawaida za kutumia utiririshaji wa bafa kulingana na lundo. Unapowasha Hali Salama, utendakazi hupungua kwa takriban 3%.

Miongoni mwa vipengele vya mimalloc, pia imebainisha kuwa haipatikani na matatizo na bloating kutokana na kugawanyika kubwa. Katika hali mbaya zaidi, matumizi ya kumbukumbu huongezeka kwa 0.2% kwa metadata na inaweza kufikia 16.7% kwa kumbukumbu iliyosambazwa. Ili kuepuka migogoro wakati wa kufikia rasilimali, mimalloc hutumia shughuli za atomiki pekee.

Chanzo: opennet.ru

Kuongeza maoni