Microsoft ha abierto una biblioteca bajo licencia MIT
La característica clave de mimalloc es su implementación compacta (menos de 3500 líneas de código) y su rendimiento muy alto. EN
Para evaluar el desempeño, se utiliza un conjunto de
El alto rendimiento se logra principalmente mediante el uso de fragmentación de listas gratuita. En lugar de una lista grande, mimalloc utiliza una serie de listas más pequeñas, cada una de las cuales está vinculada a una página de memoria. Este enfoque reduce la fragmentación y aumenta la localidad de los datos en la memoria. Una página de memoria es un conjunto agrupado de bloques de tamaño similar. En sistemas de 64 bits, el tamaño de la página suele ser de 64 KB. Si no quedan bloques ocupados en la página, ésta se libera completamente y la memoria se devuelve al sistema operativo, lo que reduce los costos de memoria y la fragmentación en programas de larga duración.
La biblioteca puede incluirse en la etapa de vinculación o cargarse para un programa ya ensamblado (“LD_PRELOAD=/usr/bin/libmimalloc.so myprogram”). La biblioteca también ofrece
Es posible construir la biblioteca en modo seguro, en el que se sustituyen páginas especiales de verificación de memoria (páginas de protección) en los límites de los bloques y se utiliza la aleatorización de la distribución de los bloques y el cifrado de las listas de bloques liberados. Estas medidas permiten bloquear las técnicas más comunes para explotar los desbordamientos de búfer basados en el montón. Cuando habilita el Modo seguro, el rendimiento disminuye aproximadamente un 3%.
Entre las características de mimalloc, también se destaca que no es susceptible a problemas de hinchazón debido a una gran fragmentación. En el peor de los casos, el consumo de memoria aumenta un 0.2% para los metadatos y puede alcanzar el 16.7% para la memoria distribuida. Para evitar conflictos al acceder a los recursos, mimalloc utiliza solo operaciones atómicas.
Fuente: opennet.ru