Meta* har annonceret genoptagelsen af udviklingen af hukommelsesstyringsbiblioteket jemalloc, hvis repository blev arkiveret i juni sidste år. Jemalloc-biblioteket tilbyder en alternativ implementation af malloc-funktioner, der er optimeret til at reducere fragmentering og fungerer på multiprocessorsystemer.
Det bemærkes, at Meta har indset fordelene ved at anvende jemalloc i sin infrastruktur og har besluttet at genoptage arbejdet med koden til dette bibliotek for at reducere omkostningerne ved vedligeholdelse, modernisering af kodebasen, eliminering af teknisk gæld og tilpasning af allokatoren til nye belastningstyper og aktuelt udstyr. Udviklingen vil fortsætte som et open source-projekt, der udvikles i samarbejde med fællesskabet og byder på deltagelse fra tredjepart.
Jemalloc-biblioteket blev udviklet af Jason Evans i 2005 til FreeBSD 7.0, hvorefter det blev porteret til NetBSD og integreret i Firefox. I 2009 skiftede skaberen af jemalloc til Facebook, hvor dette bibliotek blev brugt i interne projekter. I 2017 forlod Jason Facebook, og udviklingen blev fortsat af det tilbageværende team i Facebook. Efter omdøbningen til Meta ændrede virksomhedens prioriteter sig, udviklingen af biblioteket stoppede, og fokus blev udelukkende på interne behov, mens den offentlige kodebase langsomt degererede. For at holde den offentlige biblioteks drift krævede det betydelig refactoring, men Jason var ikke villig til at bruge sin tid på dette arbejde, og derfor blev repositoryet arkiveret for 10 måneder siden.
Blandt de planer, som Facebook har sat sig for at gennemføre efter genoplivningen af projektet:
- Reducering af den akkumulerede tekniske gæld, udførelse af refactoring og oprydning af kodebasen, forbedring af biblioteket for at bevare effektivitet, pålidelighed og brugervenlighed.
- Fortsættelse af udviklingen af HPA (Huge-Page Allocator) for at optimere CPU-ressourceforbruget ved mere optimal brug af store hukommelsessider (transparent hugepage).
- Ændringer for at øge effektiviteten af hukommelsesarbejdet relateret til forbedring af pakkestrukturer, caching og oprydning af frigjorte hukommelsesblokke.
- Tilføjelse af optimeringer til AArch64 (ARM64) arkitekturen.
Kilde: opennet.ru
