Google ha pubblicato una nuova versione del sistema di allocazione della memoria TCMalloc

Azienda Google ha presentato nuova versione del sistema di distribuzione della memoria TCMalloc, utilizzata in molti progetti interni di Google. Il codice TCMalloc è scritto in C++ e è distribuito è sotto licenza Apache. Per funzionare è necessario disporre di un compilatore che supporti C++17 per il linguaggio C++ e C11 per il linguaggio C (gcc 9.2+ o clang 9.0+). Tra i sistemi operativi è supportato solo Linux (x86, PPC).

È interessante notare che dal 2005 esiste un'altra versione di tcmalloc che veniva fornito fa parte del pacchetto gperftools (Google Performance Tools). Questi sono due reti progetti che hanno radici comuni. Il nuovo TCMalloc è piuttosto un tentativo di aprire il codice delle attuali realizzazioni interne di Google, ma non è ancora progettato per fornire un ABI stabile e supportare un'ampia gamma di sistemi operativi. La manutenzione del vecchio tcmalloc di gperftools continuerà, ma nuove funzionalità come il binding della cache alla CPU non saranno trasferite.

TCMalloc include l'implementazione della funzione malloc() in C e dell'operatore «new» in C++, ottimizzati per ottenere elevate prestazioni e applicazioni in ambienti multithreading. TCMalloc offre anche funzionalità di introspezione e profiling, consentendo all'applicazione di ottenere informazioni dettagliate sull'utilizzo della memoria nell'heap. Nel codice si applicano ottimizzazioni basate sulle moderne capacità del linguaggio C++, come
l'operatore delete con indicazione della dimensione da C++14 e l'allocazione della memoria con allineamento da C++17.

TCMalloc è composto è composto da tre componenti: un frontend con cache per un veloce allocazione e rilascio della memoria, uno strato per riempire la cache del frontend e un backend che esegue operazioni come l'ottenimento di memoria dal sistema operativo, la gestione di grandi blocchi di memoria inutilizzata e il ritorno della memoria in eccesso al SO. La cache è priva di lock e lavora in associazione con i core della CPU, ma ritorna a un modello di caching basato sui thread in assenza della funzionalità necessaria nel kernel del sistema operativo (il binding della cache alla CPU funziona solo nei kernel Linux recenti). Il backend supporta l'utilizzo sia di pagine di memoria normali che di pagine di dimensioni aumentate (hugepage).

Google ha pubblicato una nuova versione del sistema di allocazione della memoria TCMalloc

Caratteristiche principali di TCMalloc:

  • Assegnazione e rilascio rapido della memoria mediante caching. La maggior parte delle operazioni di allocazione della memoria non richiedono blocco, garantendo una buona scalabilità per applicazioni multithreading con alta parallelizzazione nell'esecuzione dei lavori;
  • Utilizzo flessibile della memoria, che consente di riutilizzare le aree di memoria liberate per oggetti di diverse dimensioni o di restituire la memoria al sistema operativo;
  • Basse spese generali per ciascun oggetto grazie all'assegnazione di pagine di oggetti di dimensione uniforme e a una rappresentazione efficiente di piccoli oggetti. Sono supportate pagine logiche di dimensioni 4KiB, 8KiB, 32KiB e 256KiB. Ad esempio, quando si richiedono blocchi da 512 byte di memoria, verrà assegnata un'intera pagina da 4KiB per oggetti da 512 byte, in cui possono essere collocati 8 di tali oggetti;
  • È possibile una regolazione fine tramite definizioni delle dimensioni della cache e parametri di intensità di restituzione della memoria al sistema operativo;
  • Fornisce informazioni dettagliate per analizzare l'utilizzo della memoria da parte dell'applicazione.

Fonte: opennet.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