Facebook ha proposto un nuovo meccanismo di gestione della memoria per il kernel Linux

Gushchin romano (Gushchin romano) da Facebook pubblicato sulla mailing list degli sviluppatori del kernel Linux una serie di patch con l'implementazione di un nuovo controller per l'allocazione della memoria lastra (controller della memoria della lastra). Il nuovo controller si distingue per lo spostamento della contabilità dello slice dal livello della pagina di memoria al livello dell'oggetto del kernel, il che rende possibile condividere le pagine sheet in diversi cgroup, invece di allocare cache sheet separate per ciascun cgroup.

L'approccio proposto consente di aumentare l'efficienza dell'utilizzo della lastra, ridurre la dimensione della memoria utilizzata per la lastra del 30-45% e ridurre significativamente il consumo complessivo di memoria del kernel. Riducendo il numero di lastre non mobili si ha anche un effetto positivo nel ridurre la frammentazione della memoria. Il nuovo controller di memoria semplifica in modo significativo il codice per la contabilizzazione degli plates e non richiede l'uso di complicati algoritmi per la creazione e l'eliminazione dinamica delle cache dei plate per ciascun cgroup. Tutti i cgroup di memoria nella nuova implementazione utilizzano un set comune di cache sheet e la durata delle cache sheet non è più legata alla durata di quelle installate tramite il cgroup restrizioni sull'utilizzo della memoria.

La contabilità più accurata delle risorse implementata nel nuovo controllore della lastra dovrebbe teoricamente caricare di più la CPU, ma in pratica le differenze si sono rivelate insignificanti. In particolare, il nuovo platesetter è stato utilizzato per diversi mesi sui server Facebook di produzione che gestiscono diversi tipi di carico di lavoro, e non sono state ancora identificate regressioni degne di nota. Allo stesso tempo, si osserva una significativa riduzione del consumo di memoria: su alcuni host è stato possibile risparmiare fino a 1 GB di memoria, ma questo indicatore dipende in larga misura dalla natura del carico, dalla dimensione totale della RAM, dal numero di CPU e le caratteristiche di lavorare con la memoria. Prove precedenti hanno mostrato riduzione del consumo di memoria di 650-700 MB (42% della memoria platea) sul front-end web, 750-800 MB (35%) sul server con cache DBMS e 700 MB (36%) sul server DNS.

Fonte: opennet.ru

Aggiungi un commento