A empresa Meta* anunciou a retomada do desenvolvimento da biblioteca de gerenciamento de memória jemalloc, cujo repositório foi arquivado em junho do ano passado. A biblioteca jemalloc oferece uma implementação alternativa das funções malloc, otimizada para reduzir a fragmentação e operar em sistemas multiprocessados.
Observa-se que a Meta reconheceu os benefícios da aplicação do jemalloc em sua infraestrutura e decidiu reiniciar o trabalho no código dessa biblioteca para reduzir os custos de manutenção, modernizar a base de código, eliminar a dívida técnica e adaptar o alocador para novos tipos de carga e equipamentos atuais. O desenvolvimento será continuado na forma de um projeto aberto, desenvolvido em conjunto com a comunidade e que acolhe a participação de colaboradores externos.
A biblioteca jemalloc foi desenvolvida por Jason Evans em 2005 para o FreeBSD 7.0, após o que foi portado para o NetBSD e integrado ao Firefox. Em 2009, o autor do jemalloc se juntou à empresa Facebook, onde essa biblioteca foi utilizada em projetos internos. Em 2017, Jason saiu do Facebook, e o desenvolvimento foi continuado pela equipe restante da empresa. Após a renomeação para Meta, as prioridades da empresa mudaram, o desenvolvimento da biblioteca estagnou e a atenção se concentrou apenas nas necessidades internas, enquanto a base de código pública foi se degradando ao longo do tempo. Para manter a biblioteca pública, foi necessário um significativo refatoramento, mas Jason não estava disposto a dedicar seu tempo para esse trabalho e, portanto, há 10 meses, arquivou o repositório.
Entre os planos que a Facebook pretende implementar após a renovação do projeto:
- Redução da dívida técnica acumulada, execução de refatoração e limpeza da base de código, aprimoramento da biblioteca para manter a eficiência, confiabilidade e facilidade de uso.
- Continuação do desenvolvimento do alocador HPA (Huge-Page Allocator) para otimizar o consumo de recursos CPU por meio de uma utilização mais eficiente de páginas de memória grandes (transparent hugepage).
- Alterações feitas para aumentar a eficiência do uso da memória, relacionadas à melhoria da embalagem de estruturas, cache e liberação de blocos de memória.
- Adição de otimizações para a arquitetura AArch64 (ARM64).
Fonte: opennet.ru
