Microsoft har åpnet et bibliotek under MIT-lisensen
Nøkkelfunksjonen til mimalloc er dens kompakte implementering (mindre enn 3500 linjer med kode) og svært høy ytelse. I
For å evaluere ytelse, et sett med eksisterende
Høy ytelse oppnås hovedsakelig gjennom bruk av gratis listeskjæring. I stedet for én stor liste, bruker mimalloc en serie med mindre lister, som hver er bundet til en minneside. Denne tilnærmingen reduserer fragmentering og øker datalokaliteten i minnet. En minneside er et gruppert sett med blokker av lignende størrelse. På 64-biters systemer er sidestørrelsen vanligvis 64 KB. Hvis det ikke er noen okkuperte blokker igjen på siden, frigjøres den fullstendig og minnet returneres til operativsystemet, noe som reduserer minnekostnader og fragmentering i langvarige programmer.
Biblioteket kan inkluderes på koblingsstadiet eller lastes inn for et allerede satt sammen program ("LD_PRELOAD=/usr/bin/libmimalloc.so myprogram"). Biblioteket tilbyr også
Det er mulig å bygge biblioteket i en sikker modus, der spesielle minnesjekksider (guard-pages) erstattes ved blokkgrensene, og randomisering av blokkdistribusjon og kryptering av lister over frigjorte blokker brukes. Slike tiltak gjør det mulig å blokkere de fleste vanlige teknikkene for å utnytte heap-baserte bufferoverløp. Når du aktiverer sikkermodus, reduseres ytelsen med omtrent 3 %.
Blant funksjonene til mimalloc er det også bemerket at det ikke er mottakelig for problemer med oppblåsthet på grunn av stor fragmentering. I verste fall øker minneforbruket med 0.2 % for metadata og kan nå 16.7 % for distribuert minne. For å unngå konflikter når du får tilgang til ressurser, bruker mimalloc kun atomoperasjoner.
Kilde: opennet.ru