Компания 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
