Компания Meta* обяви възобновяването на разработката на библиотеката за управление на паметта jemalloc, чийто репозиторий през юни миналата година беше преведен в архивен режим. Библиотеката jemalloc предлага алтернативна реализация на функциите malloc, оптимизирана за намаляване на фрагментацията и работа на многопроцесорни системи.
Отбелязва се, че компания Meta е осъзнала предимствата от прилагането на jemalloc в своята инфраструктура и е решила да възобнови работата по кода на тази библиотека, за да намали разходите за поддръжка, да модернизира кодовата база, да се освободи от техническия дълг и да адаптира алокатора за нови видове натоварвания и актуално оборудване. Разработката ще продължи под формата на открит проект, развиван съвместно с общността и приветстващ включването на външни участници.
Библиотеката jemalloc е разработена от Джейсън Еванс (Jason Evans) през 2005 година за FreeBSD 7.0, след което е портирована в NetBSD и интегрирана в състава на Firefox. През 2009 година авторът на jemalloc премина на работа в компания Facebook, в която тази библиотека бе използвана в вътрешни проекти. През 2017 година Джейсън напусна Facebook, а разработката беше продължена от останалия екип на Facebook. След преименуването в Meta приоритетите на компанията се промениха, развитието на библиотеката се забави, а разработката се съсредоточи само върху вътрешни нужди, като обществено достъпната кодова база с времето деградира. За поддържането на обществено достъпната библиотека беше необходим значителен рефакторинг, но Джейсън не беше готов да инвестира времето си в тази работа и затова 10 месеца назад преведе репозитория в архивен режим.
Сред плановете, които компания Facebook е предвидила да реализира след възраждането на проекта, са:
- Намаляване на натрупания технически дълг, провеждане на рефакторинг и почистване на кодовата база, усъвършенстване на библиотеката за запазване на ефективността, надеждността и простотата на използване.
- Продължаване развитието на алокатора HPA (Huge-Page Allocator) за оптимизация на ресурсите на CPU чрез по-оптимално използване на големи страници памет (transparent hugepage).
- Извършване на промени за повишаване на ефективността при работа с паметта, свързани с подобряване на опаковката на структури, кеширане и почистване на освободените блокове памет.
- Добавяне на оптимизации за архитектурата AArch64 (ARM64).
Източник: opennet.ru
