Nuovo metodo di gestione della memoria da Facebook

Uno dei membri del team di sviluppo del social network Facebook, Roman Gushchin, ha proposto in una newsletter per gli sviluppatori un insieme di patch per il kernel Linux, mirate a migliorare la gestione della memoria attraverso l'implementazione di un nuovo controller che la gestisce — slab (slab memory controller).

La gestione slab –– è un meccanismo di gestione della memoria progettato per una distribuzione più efficiente della memoria e per ridurre significativamente la frammentazione. La base di questo algoritmo è il mantenimento della memoria allocata che contiene oggetti di un certo tipo e il riutilizzo di questa memoria durante la successiva allocazione per oggetti dello stesso tipo. Questo metodo è stato introdotto per la prima volta in SunOS da Jeff Bonwick ed è ora ampiamente utilizzato nei kernel di molti sistemi operativi Unix, inclusi FreeBSD e Linux.

Alla base del nuovo controller c'è il trasferimento del tracciamento slab dal livello delle pagine di memoria a quello degli oggetti del kernel, il che consente la condivisione di una pagina slab in diverse cgroup, invece di allocare una cache separata per ogni cgroup.

Dai risultati dei test, si evidenzia che il metodo di gestione della memoria proposto consente di aumentare l'efficienza nell'uso dello slab fino al 45%, e ridurrà anche il consumo complessivo di memoria del kernel. Inoltre, grazie alla riduzione del numero di pagine allocate per slab, si riduce la frammentazione della memoria nel complesso, il che influisce positivamente sulle prestazioni del sistema.

Il nuovo controller è in fase di test da diversi mesi sui server di Facebook, e finora questi test possono essere considerati positivi: senza perdite nelle prestazioni e senza un aumento degli errori, si è notata una chiara diminuzione del consumo di memoria - in alcuni server fino a 1 GB. Questo numero è piuttosto soggettivo; per esempio, test precedentemente condotti hanno mostrato risultati leggermente inferiori:

  • 650-700 MB sul frontend web
  • 750-800 MB su un server con cache del database
  • 700 MB su un server DNS

>>> Pagina dell'autore su GitHub


>>> Risultati dei test preliminari

Fonte: linux.org.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster