La biblioteca de gestión de memoria jemalloc 5.3.1 está disponible

Después de 4 años desde la publicación de la última actualización, está disponible el lanzamiento de la biblioteca de gestión de memoria jemalloc 5.3.1, que ofrece una implementación alternativa de las funciones malloc, optimizada para reducir la fragmentación y operar en sistemas multiprocesador. Para abordar los problemas de bloqueos en sistemas multinúcleo, jemalloc utiliza un área de asignación de memoria aislada para cada núcleo de CPU, lo que permite lograr una escalabilidad lineal con el aumento del número de hilos.

En junio de 2025, el autor del proyecto dejó de dar soporte y archivó el repositorio de jemalloc, pero hace un mes, Meta, que utiliza jemalloc en su infraestructura, reanudó el desarrollo. La biblioteca fue inicialmente desarrollada para FreeBSD y se utiliza de forma predeterminada en este sistema operativo desde 2005. El código de la biblioteca está escrito en C y se distribuye bajo la licencia BSD.

Entre los cambios:

  • Se ha implementado la función pvalloc, que puede ser útil al sustituir el asignador de memoria libc.
  • Las versiones de depuración incluyen un modo de detección de llamadas duplicadas a la función free(). Para ajustar el tamaño de la pila, dentro de la cual se lleva a cabo el escaneo, se ha agregado el parámetro debug_double_free_max_scan.
  • Se ha añadido la opción de compilación "—enable-pageid" para etiquetar al mapear memoria, utilizando prctl con la bandera PR_SET_VMA. Una vez habilitado, el mapeo se puede rastrear a través de /proc//maps.
  • Se ha añadido el parámetro "prof_bt_max", que permite establecer la profundidad máxima de la pila para el perfilado.
  • Se ha añadido la opción de compilación "—enable-force-getenv" para utilizar en el código la función estándar getenv() en lugar de la protegida secure_getenv().
  • Se ha añadido la opción de compilación "—disable-dss" para deshabilitar el uso de la función sbrk().
  • Se ha añadido el parámetro "tcache_ncached_max" para limitar el número de elementos en la caché de hilos.
  • Se ha añadido el parámetro "calloc_madvise_threshold" para configurar el uso del mecanismo del núcleo madvise o la función memset para anular la memoria asignada a través de la función calloc.
  • Se ha añadido la opción de compilación "—disable-user-config" para deshabilitar la carga de configuraciones desde el archivo /etc/malloc.conf o la variable de entorno MALLOC_CONF.
  • Se ha añadido el parámetro "process_madvise_max_batch" para limitar el número de bloques de memoria por cada operación de batch madvise.
  • Se ha añadido el parámetro «disable_large_size_classes» para desactivar el nuevo algoritmo de cálculo del tamaño de la memoria asignada, que reduce la sobrecarga al asignar bloques de más de 4 páginas de memoria.
  • Se han añadido las opciones a la utilidad mallctl: opt.prof_bt_max, arena.<i>.name, thread.tcache.max, thread.tcache.ncached_max.write, thread.tcache.ncached_max.read_sizeclass, arenas.hugepage y approximate_stats.active.

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster