La empresa Meta* ha anunciado la reanudación del desarrollo de la biblioteca de gestión de memoria jemalloc, cuyo repositorio fue archivado en junio del año pasado. La biblioteca jemalloc ofrece una implementación alternativa de las funciones malloc, optimizada para reducir la fragmentación y funcionar en sistemas multiprocesador.
Se señala que la empresa Meta ha reconocido las ventajas de utilizar jemalloc en su infraestructura y ha decidido reanudar el trabajo en el código de esta biblioteca para reducir los costos de mantenimiento, modernizar la base de código, eliminar la deuda técnica y adaptar el asignador a nuevas cargas de trabajo y equipos actuales. El desarrollo se llevará a cabo como un proyecto de código abierto, fomentado por la comunidad e invitando a la participación de externos.
La biblioteca jemalloc fue desarrollada por Jason Evans en 2005 para FreeBSD 7.0, y luego fue portado a NetBSD e integrado en Firefox. En 2009, el autor de jemalloc se unió a Facebook, donde esta biblioteca se utilizó en proyectos internos. En 2017, Jason dejó Facebook y el desarrollo continuó con el equipo restante de Facebook. Tras el cambio de nombre a Meta, las prioridades de la empresa cambiaron, el desarrollo de la biblioteca se estancó, y se centró únicamente en necesidades internas, mientras que el código de acceso público se degradó con el tiempo. Se requería una importante refactorización para mantener la biblioteca pública en funcionamiento, pero Jason no estaba dispuesto a dedicar su tiempo a este trabajo y, por lo tanto, hace 10 meses archivó el repositorio.
Entre los planes que Facebook ha delineado después de la reactivación del proyecto se encuentran:
- Reducir la deuda técnica acumulada, realizar refactorización y limpieza de la base de código, y mejorar la biblioteca para mantener la eficiencia, fiabilidad y facilidad de uso.
- Continuar el desarrollo del asignador HPA (Huge-Page Allocator) para optimizar el consumo de recursos CPU mediante un uso más eficiente de las grandes páginas de memoria (transparent hugepage).
- Realización de cambios para mejorar la eficiencia en el uso de la memoria, relacionados con la mejora del empaquetado de estructuras, la caché y la limpieza de bloques de memoria liberados.
- Adición de optimizaciones para la arquitectura AArch64 (ARM64).
Fuente: opennet.ru
