Microsoft har åbnet et bibliotek under MIT-licensen
Nøglefunktionen ved mimalloc er dens kompakte implementering (mindre end 3500 linjer kode) og meget høj ydeevne. I
For at evaluere ydeevne, et sæt af eksisterende
Høj ydeevne opnås hovedsageligt gennem brug af gratis listeskæring. I stedet for én stor liste bruger mimalloc en række mindre lister, som hver er bundet til en hukommelsesside. Denne tilgang reducerer fragmentering og øger datalokaliteten i hukommelsen. En hukommelsesside er et grupperet sæt af blokke af lignende størrelse. På 64-bit systemer er sidestørrelsen typisk 64 KB. Hvis der ikke er nogen besatte blokke tilbage på siden, frigøres den fuldstændigt, og hukommelsen returneres til operativsystemet, hvilket reducerer hukommelsesomkostninger og fragmentering i langvarige programmer.
Biblioteket kan inkluderes på linkningsstadiet eller indlæses for et allerede samlet program ("LD_PRELOAD=/usr/bin/libmimalloc.so myprogram"). Biblioteket sørger også for
Det er muligt at bygge biblioteket i en sikker tilstand, hvor specielle hukommelseskontrolsider (guard-pages) erstattes ved blokgrænserne, og randomisering af blokdistribution og kryptering af lister over frigjorte blokke anvendes. Sådanne foranstaltninger gør det muligt at blokere de mest almindelige teknikker til at udnytte heap-baserede bufferoverløb. Når du aktiverer fejlsikret tilstand, falder ydeevnen med cirka 3 %.
Blandt funktionerne i mimalloc bemærkes det også, at det ikke er modtageligt for problemer med oppustethed på grund af stor fragmentering. I det værste tilfælde stiger hukommelsesforbruget med 0.2 % for metadata og kan nå op på 16.7 % for distribueret hukommelse. For at undgå konflikter ved adgang til ressourcer bruger mimalloc kun atomoperationer.
Kilde: opennet.ru