Facebook возобновил разработку библиотеки управления памятью jemalloc

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

Источник: http://www.opennet.ru/opennews/art.shtml?num=65006