Skip to content
Tech AI Wire

Jemalloc 5.4.0 llega con 160 commits tras el regreso de Meta

La primera versión de jemalloc desde que Meta renovó su inversión trae más de 160 commits, una nueva capa de abstracción del sistema y selección de arena por CPU.

Por Tech AI Wire Team

3 min de lectura

XLinkedIn
Four black-finned server memory modules stand upright in a row on a plain gray studio backdrop.

En cifras

commits in the 5.4.0 release
160+
developers credited in the release notes
13

Jemalloc 5.4.0 se publicó el 17 de septiembre de 2026 con más de 160 commits de 13 desarrolladores. Las notas de la versión la describen como una entrega de limpieza, y esa es la noticia. Jemalloc pasó años casi sin moverse. Meta dijo a principios de este año que volvería a invertir en el proyecto.

Un asignador de memoria es el código que entrega memoria cuando un programa la pide. Cada llamada a malloc en C, y cada reserva en el montículo en un lenguaje construido sobre él, pasa por uno. Jemalloc es la alternativa a la que recurren los servidores cuando el asignador por defecto fragmenta la memoria o se vuelve lento con muchos hilos. Phoronix señala que sigue siendo popular en cargas de servidor y de cómputo de alto rendimiento, con algo de uso en escritorio.

Qué cambió en 5.4.0

CambioQué hace
Más de 160 commits de limpiezaRefactorización, corrección de errores, más cobertura de pruebas y opciones de compilación ordenadas
Nueva capa de abstracción del sistemaAgrupa el código específico de cada plataforma tras una sola interfaz
Fachada modularizadaDivide los puntos de entrada en piezas más pequeñas y separables
Selección de arena por CPUUn hilo puede volver a elegir su arena según la CPU, con thread.arena
EXTENT_ALLOC_FLAG_PINNEDMarca un mapeo como no devolvible en los hooks de extents propios
Correcciones de avisos de GCC 16Compila limpio con el compilador más reciente

La capa de abstracción es el mayor cambio estructural. Reúne las partes que difieren según el sistema operativo. Esa lista cubre entrada y salida de archivos y procesos, tiempo, sincronización, manejo de CPU, memoria virtual, manejo de fork, manejo de errores, perfilado, cesión de hilo y acceso a configuración. Todo eso queda ahora tras una interfaz, en lugar de estar disperso por el código.

Una arena es la unidad de separación de jemalloc. Cada una tiene sus propias reservas de memoria, así que los hilos que usan arenas distintas compiten menos entre sí. La selección por CPU significa que un hilo puede ligarse a la arena que corresponde a la CPU donde se ejecuta. Así la memoria queda más cerca del núcleo que la usa.

Los hooks de extents son la otra perilla avanzada. Permiten entregar a jemalloc memoria propia, por ejemplo de un mapeo compartido o de un dispositivo. La nueva bandera pinned le indica a jemalloc que ese mapeo nunca debe devolverse al sistema.

Por qué una versión de limpieza es la noticia

Las notas dicen que el trabajo se centró en "la limpieza de deuda técnica, incluidas refactorizaciones, correcciones de errores, mejora de la cobertura de pruebas y limpieza de opciones". No es una lista de funciones, y ese es justamente el punto. La inversión renovada de Meta, destacada por Phoronix, llega como mantenimiento y no como una ráfaga de opciones nuevas.

El orden importa para quien decide si volver a depender del proyecto. Redis, programas de Rust que lo activan y muchos servidores de bases de datos y almacenamiento llevan años incluyendo jemalloc. Un proyecto que solo acepta funciones acumula justamente los casos especiales por plataforma que vuelven doloroso el siguiente port.

Qué significa esto para los desarrolladores

Si ya enlaza jemalloc, 5.4.0 es una actualización tranquila para probar. Pruébela con su propia carga y no con una suite de pruebas de rendimiento, porque el comportamiento de un asignador depende de tamaños de reserva y cantidad de hilos que solo su aplicación conoce. Observe la memoria residente y la latencia de cola, no solo el rendimiento.

Si mantiene un port a una plataforma menos común, lea primero la capa de abstracción del sistema. El código de plataforma que vivía en bloques #ifdef dispersos ahora tiene un solo lugar, lo que debería hacer más pequeño y más fácil de mantener un parche fuera del árbol.

La opción de arena por CPU merece una medición en máquinas con muchos núcleos. Ayuda más cuando muchos hilos reservan a la vez y los bloqueos del asignador se vuelven el cuello de botella. Mida en lugar de suponer una mejora, y compare con su número actual de arenas.

Por último, tome las correcciones de avisos de GCC 16 como una señal sobre su propia compilación. Las distribuciones están pasando a ese compilador, y una dependencia que avisa en voz alta romperá más adelante una compilación estricta.

Fuentes

  1. Release 5.4.0 - GitHub
  2. Jemalloc 5.4 Released With Portability Improvements, Code Cleanups - Phoronix

Artículos relacionados

A process listing on a Kubernetes v1.37 node, showing containerd, kubelet and kube-proxy owned by the kube user while the systemd services still run as root.
Dev Stack

Kubernetes 1.37 pasa el modo rootless a beta

Kubernetes 1.37 pasa KubeletInUserNamespace a beta. El kubelet, los runtimes de contenedores, los plugins CNI y kube-proxy ya pueden ejecutarse como usuario corriente.