Firma Meta* ogłosiła wznowienie prac nad biblioteką zarządzania pamięcią jemalloc, której repozytorium w czerwcu ubiegłego roku zostało przeniesione do trybu archiwum. Biblioteka jemalloc oferuje alternatywną implementację funkcji malloc, zoptymalizowaną w celu zmniejszenia fragmentacji i pracy na systemach wieloprocesorowych.
Zauważono, że firma Meta dostrzegła korzyści z zastosowania jemalloc w swojej infrastrukturze i postanowiła wznowić prace nad kodem tej biblioteki w celu obniżenia kosztów utrzymania, modernizacji bazy kodu, pozbycia się długu technologicznego oraz dostosowania alokatora do nowych rodzajów obciążenia i aktualnego sprzętu. Prace będą kontynuowane w formie projektu open source, rozwijanego wspólnie z społecznością oraz zapraszającego do współpracy zewnętrznych uczestników.
Biblioteka jemalloc została stworzona przez Jasona Evansa w 2005 roku dla FreeBSD 7.0, po czym została przeniesiona do NetBSD i zintegrowana w Firefoxie. W 2009 roku autor jemalloc przeszedł do pracy w firmie Facebook, w której ta biblioteka była wykorzystywana w projektach wewnętrznych. W 2017 roku Jason odszedł z Facebooka, a prace kontynuował pozostały zespół z Facebooka. Po przemianowaniu na Meta priorytety firmy uległy zmianie, rozwój biblioteki zastojał, a prace skupiły się tylko na wewnętrznych potrzebach, a wspólna baza kodu z czasem uległa degradacji. Aby utrzymać publiczną bibliotekę na powierzchni, potrzebny był znaczący refaktoryzacja, ale Jason nie był gotów poświęcić na to swojego czasu i dlatego 10 miesięcy temu przeniósł repozytorium do trybu archiwum.
Wśród planów, które firma Facebook zamierza zrealizować po wznowieniu projektu:
- Zredukowanie nagromadzonego długu technologicznego, przeprowadzenie refaktoryzacji i oczyszczenia bazy kodu, poprawa biblioteki w celu zachowania efektywności, niezawodności i prostoty użytkowania.
- Kontynuacja rozwoju alokatora HPA (Huge-Page Allocator) w celu optymalizacji zużycia zasobów CPU poprzez bardziej efektywne wykorzystanie dużych stron pamięci (transparent hugepage).
- Wprowadzenie zmian zwiększających efektywność zarządzania pamięcią, związanych z ulepszeniem pakowania struktur, pamięci podręcznej i czyszczenia zwolnionych bloków pamięci.
- Dodanie optymalizacji dla architektury AArch64 (ARM64).
Źródło: opennet.ru
