Microsoft har öppnat ett bibliotek under MIT-licensen
Nyckelfunktionen hos mimalloc är dess kompakta implementering (mindre än 3500 rader kod) och mycket höga prestanda. I
För att utvärdera prestanda, en uppsättning av befintliga
Hög prestanda uppnås främst genom användning av gratis listskärning. Istället för en stor lista använder mimalloc en serie mindre listor, som var och en är bunden till en minnessida. Detta tillvägagångssätt minskar fragmentering och ökar datalokaliteten i minnet. En minnessida är en grupperad uppsättning block av liknande storlek. På 64-bitarssystem är sidstorleken vanligtvis 64 KB. Om det inte finns några upptagna block kvar på sidan frigörs den helt och minnet återförs till operativsystemet, vilket minskar minneskostnaderna och fragmenteringen i långvariga program.
Biblioteket kan inkluderas i länkningsstadiet eller laddas för ett redan monterat program ("LD_PRELOAD=/usr/bin/libmimalloc.so myprogram"). Biblioteket tillhandahåller också
Det är möjligt att bygga biblioteket i ett säkert läge, där speciella minneskontrollsidor (guard-pages) ersätts vid blockgränserna, och randomisering av blockdistribution och kryptering av listor över frigjorda block används. Sådana åtgärder gör det möjligt att blockera de vanligaste teknikerna för att utnyttja heap-baserade buffertspill. När du aktiverar felsäkert läge minskar prestandan med cirka 3 %.
Bland funktionerna hos mimalloc noteras det också att det inte är mottagligt för problem med uppblåsthet på grund av stor fragmentering. I värsta fall ökar minnesförbrukningen med 0.2 % för metadata och kan nå 16.7 % för distribuerat minne. För att undvika konflikter vid åtkomst till resurser använder mimalloc endast atomoperationer.
Källa: opennet.ru