Microsoft ha aperto una libreria sotto la licenza MIT
La caratteristica fondamentale di mimalloc è la sua implementazione compatta (meno di 3500 righe di codice) e le prestazioni molto elevate. IN
Per valutare le prestazioni, un insieme di file esistenti
Le prestazioni elevate si ottengono principalmente attraverso l'uso dello sharding gratuito delle liste. Invece di un lungo elenco, mimalloc utilizza una serie di elenchi più piccoli, ciascuno dei quali è legato a una pagina di memoria. Questo approccio riduce la frammentazione e aumenta la località dei dati nella memoria. Una pagina di memoria è un insieme raggruppato di blocchi di dimensioni simili. Sui sistemi a 64 bit, la dimensione della pagina è in genere 64 KB. Se nella pagina non rimangono blocchi occupati, questa viene completamente liberata e la memoria viene restituita al sistema operativo, riducendo così i costi di memoria e la frammentazione nei programmi a lunga esecuzione.
La libreria può essere inclusa nella fase di collegamento o caricata per un programma già assemblato (“LD_PRELOAD=/usr/bin/libmimalloc.so myprogram”). La biblioteca fornisce anche
È possibile costruire la libreria in modalità sicura, in cui speciali pagine di controllo della memoria (pagine di guardia) vengono sostituite ai confini dei blocchi e vengono utilizzate la randomizzazione della distribuzione dei blocchi e la crittografia degli elenchi dei blocchi liberati. Tali misure consentono di bloccare le tecniche più comuni per sfruttare i buffer overflow basati su heap. Quando si abilita la modalità provvisoria, le prestazioni diminuiscono di circa il 3%.
Tra le caratteristiche di mimalloc si segnala anche che non è soggetto a problemi di gonfiore dovuti alla grande frammentazione. Nello scenario peggiore, il consumo di memoria aumenta dello 0.2% per i metadati e può raggiungere il 16.7% per la memoria distribuita. Per evitare conflitti durante l'accesso alle risorse, mimalloc utilizza solo operazioni atomiche.
Fonte: opennet.ru