Microsoft on avanud mimalloci mälujaotussüsteemi koodi

Microsoft on avanud raamatukogu MIT-i litsentsi alusel mmalloc algselt keelte käitusaegsete komponentide jaoks loodud mälujaotussüsteemi rakendustest Koka и Lean. Mimalloc on kohandatud kasutamiseks tavalistes rakendustes ilma nende koodi muutmata ja võib toimida malloc funktsiooni läbipaistva asendusena. Toetab tööd Windowsis, macOS-is, Linuxis, BSD-s ja muudes Unixi sarnastes süsteemides.

Mimalloci põhiomadus on selle kompaktne teostus (alla 3500 koodirea) ja väga kõrge jõudlus. IN tehtud katsed mimalloc edestas kõiki konkureerivaid mälujaotuse teeke, sealhulgas jemalloc, tcmalloc, snmalloc, rpmalloc и Koguge.

Toimivuse hindamiseks olemasolevate kogum standardsed testid Mõnes testis on mimalloc kordades kiirem kui teised süsteemid, näiteks objektide erinevate lõimede vahelise migratsiooni testis osutus mimalloc üle 2.5 korra kiiremaks kui tcmalloc ja jemalloc. Samas täheldatakse enamikes testides ka väiksemat mälukulu, mõnes olukorras saab mälukulu vähendada 25%.

Microsoft on avanud mimalloci mälujaotussüsteemi koodi

Kõrge jõudlus saavutatakse peamiselt tasuta loendi jagamise abil. Ühe suure loendi asemel kasutab mimalloc väiksemaid loendeid, millest igaüks on seotud mälulehega. See lähenemisviis vähendab killustatust ja suurendab andmete asukohta mälus. Mäluleht on sarnase suurusega plokkide rühmitatud komplekt. 64-bitistes süsteemides on lehe suurus tavaliselt 64 KB. Kui lehele pole jäänud ühtegi hõivatud plokki, vabastatakse see täielikult ja mälu tagastatakse operatsioonisüsteemile, mis vähendab mälukulusid ja killustatust kauakestvates programmides.

Teeki saab kaasata linkimise etapis või laadida juba kokkupandud programmi jaoks (“LD_PRELOAD=/usr/bin/libmimalloc.so myprogram”). Raamatukogu pakub ka API funktsionaalsuse integreerimiseks käitusaja ja peeneteralise käitumise juhtimiseks, näiteks laiskade mälu vabastamise töötlejate ühendamiseks ja viiteloendurite monotoonseks suurendamiseks. Rakenduses on võimalik luua ja kasutada mitut "hunnikut" erinevate mälupiirkondade vahel jagamiseks. Samuti on võimalik hunnik täielikult vabastada, ilma sinna asetatud esemeid läbimata ja eraldi vabastamata.

Teek on võimalik ehitada turvarežiimis, kus plokkide piiridel asendatakse spetsiaalsed mälukontrolli lehed (kaitselehed) ning kasutatakse plokkide jaotuse randomiseerimist ja vabastatud plokkide nimekirjade krüptimist. Sellised meetmed võimaldavad blokeerida enamlevinud tehnikad kuhjapõhise puhvri ületäitumise ärakasutamiseks. Kui lubate turvarežiimi, väheneb jõudlus umbes 3%.

Mimalloci omaduste hulgas märgitakse ka seda, et see ei ole suure killustumise tõttu vastuvõtlik puhitusprobleemidele. Halvima stsenaariumi korral suureneb mälutarbimine metaandmete puhul 0.2% ja hajutatud mälu puhul võib see ulatuda 16.7%. Vältimaks konflikte ressurssidele juurdepääsul, kasutab mimalloc ainult tuumaoperatsioone.

Allikas: opennet.ru

Lisa kommentaar