L'azienda Meta* ha annunciato la ripresa dello sviluppo della libreria di gestione della memoria jemalloc, il cui repository era stato archiviato lo scorso giugno. La libreria jemalloc offre un'implementazione alternativa delle funzioni malloc, ottimizzata per ridurre la frammentazione e funzionare su sistemi multiprocessore.
Si segnala che Meta ha riconosciuto i vantaggi derivanti dall'uso di jemalloc nella propria infrastruttura e ha deciso di riprendere il lavoro sul codice di questa libreria per ridurre i costi di supporto, aggiornare la base di codice, eliminare il debito tecnico e adattare l'allocatore a nuovi tipi di carico e hardware attuale. Lo sviluppo continuerà sotto forma di un progetto open source, sviluppato insieme alla comunità e aperto al coinvolgimento di partecipanti esterni.
La libreria jemalloc è stata sviluppata da Jason Evans nel 2005 per FreeBSD 7.0, dopodiché è stata portata su NetBSD e integrata in Firefox. Nel 2009, l'autore di jemalloc è passato a lavorare per Facebook, dove questa libreria è stata utilizzata in progetti interni. Nel 2017, Jason ha lasciato Facebook e lo sviluppo è continuato con il team rimanente di Facebook. Dopo la ridenominazione in Meta, le priorità dell'azienda sono cambiate, lo sviluppo della libreria si è bloccato, concentrandosi solo sulle necessità interne, mentre il codice pubblico è andato degradandosi nel tempo. Per mantenere la libreria pubblica a galla era necessario un significativo refactoring, ma Jason non era pronto a dedicare il suo tempo a questo lavoro e così, 10 mesi fa, ha messo il repository in modalità archiviazione.
Tra i progetti che Facebook ha pianificato di realizzare dopo la ripresa del progetto:
- Riduzione del debito tecnico accumulato, esecuzione di refactoring e pulizia del codice, miglioramento della libreria per mantenere efficienza, affidabilità e facilità d'uso.
- Continuazione dello sviluppo dell'allocatore HPA (Huge-Page Allocator) per ottimizzare il consumo delle risorse CPU tramite un utilizzo più efficiente delle grandi pagine di memoria (transparent hugepage).
- Apportare modifiche per migliorare l'efficienza della gestione della memoria, relative al miglioramento dell'imballaggio delle strutture, della memorizzazione nella cache e della pulizia dei blocchi di memoria liberati.
- Aggiunta di ottimizzazioni per l'architettura AArch64 (ARM64).
Fonte: opennet.ru
