Facebook ha introdotto il meccanismo TMO, che consente di risparmiare il 20-32% di memoria sui server

Gli ingegneri di Facebook (vietato nella Federazione Russa) hanno pubblicato lo scorso anno un rapporto sull'introduzione della tecnologia TMO (Transparent Memory Offloading), che consente di risparmiare in modo significativo la RAM sui server spostando i dati secondari che non sono necessari per eseguire il lavoro su unità più economiche , come i dischi SSD NVMe. Facebook stima che l'utilizzo di TMO consente di risparmiare tra il 20% e il 32% di RAM su ciascun server. La soluzione è progettata per l'utilizzo in infrastrutture in cui le applicazioni vengono eseguite in container isolati. I componenti lato kernel di TMO sono già inclusi nel kernel di Linux.

Lato kernel Linux, il funzionamento della tecnologia è assicurato dal sottosistema PSI (Pressure Stall Information), fornito a partire dalla release 4.20. PSI è già utilizzato in vari gestori di memoria esaurita e consente di analizzare le informazioni sul tempo di attesa per l'ottenimento di varie risorse (CPU, memoria, I/O). Con PSI, i processori in spazio utente possono valutare in modo più accurato il carico del sistema e i modelli di rallentamento, consentendo di rilevare tempestivamente le anomalie, prima che abbiano un impatto notevole sulle prestazioni.

Nello spazio utente, TMO è gestito dal componente Senpai, che regola dinamicamente il limite di memoria per i contenitori dell'applicazione tramite cgroup2 in base ai dati ricevuti dal PSI. Senpai analizza i segnali dell'inizio di una carenza di risorse tramite PSI, valuta la sensibilità delle applicazioni al rallentamento dell'accesso alla memoria e cerca di determinare la dimensione minima della memoria richiesta per un contenitore, alla quale i dati necessari per il lavoro rimangono nella RAM, e i dati correlati che si sono depositati nella cache del file o non sono attualmente utilizzati direttamente, vengono forzati nella partizione di swap.

Facebook ha introdotto il meccanismo TMO, che consente di risparmiare il 20-32% di memoria sui server

Pertanto, l'essenza di TMO è mantenere i processi a una dieta rigorosa in termini di consumo di memoria, costringendo le pagine di memoria inutilizzate a essere spostate nella partizione di swap, la cui rimozione non influisce in modo significativo sulle prestazioni (ad esempio, pagine con codice utilizzato solo durante l'inizializzazione e i dati monouso nella cache del disco). A differenza dell'eliminazione delle informazioni nella partizione di swap in risposta alla memoria insufficiente, TMO elimina i dati in base alla previsione predittiva.

L'assenza di un accesso alla pagina di memoria entro 5 minuti viene utilizzata come uno dei criteri per la prelazione. Tali pagine sono dette cold (pagina di memoria fredda) e mediamente costituiscono circa il 35% della memoria dell'applicazione (a seconda del tipo di applicazione si varia dal 19% al 65%). La prelazione tiene conto dell'attività associata alle pagine anonime di memoria (memoria allocata dall'applicazione) e alla memoria utilizzata per la memorizzazione nella cache dei file (allocata dal kernel). In alcune applicazioni la memoria anonima è il consumo principale, ma in altre anche la cache dei file è molto importante. Per evitare squilibri durante lo scaricamento della memoria nella cache, TMO utilizza un nuovo algoritmo di paging che scarica proporzionalmente le pagine anonime e le pagine associate alla cache dei file.

L'invio di pagine utilizzate di rado a una memoria più lenta non ha un enorme impatto sulle prestazioni, ma può ridurre significativamente i costi dell'hardware. I dati vengono inviati agli SSD o allo spazio di scambio compresso nella RAM. Al costo di archiviare un byte di dati, l'uso di NVMe SSD è fino a 10 volte più economico rispetto all'uso della compressione nella RAM.

Facebook ha introdotto il meccanismo TMO, che consente di risparmiare il 20-32% di memoria sui server


Fonte: opennet.ru

Aggiungi un commento