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

Google ha presentato nuova versione del sistema di distribuzione della memoria TCMalloc, utilizzato in molti progetti interni di Google. Il codice TCMalloc è scritto in C++ e distribuito è distribuito sotto licenza Apache. Richiede un compilatore che supporti C++17 per il linguaggio C++ e C11 per il linguaggio C (gcc 9.2+ o clang 9.0+). Le sole piattaforme supportate sono supportata 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 diverse progetti con radici comuni. Il nuovo TCMalloc è più un tentativo di rilasciare il codice delle attuali implementazioni interne di Google, ma non è ancora mirato a fornire un ABI stabile e a supportare un'ampia gamma di sistemi operativi. Il supporto per il vecchio tcmalloc di gperftools continuerà, ma non sono previsti trasferimenti di nuove funzionalità, come la cache legata alla CPU.

TCMalloc include un'implementazione della function malloc() in C e dell'operatore "new" in C++, ottimizzati per prestazioni elevate e applicazioni multithreading. TCMalloc offre anche funzionalità di introspezione e profiling, consentendo all'applicazione di ottenere informazioni dettagliate sull'utilizzo della memoria nell'heap. Nel codice sono applicate ottimizzazioni basate sulle moderne funzionalità 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 front-end con cache per l'allocazione e la liberazione rapida della memoria, uno strato per il riempimento della cache del front-end e un backend che esegue operazioni come l'ottenimento di memoria dal sistema operativo, la gestione di grandi blocchi di memoria non utilizzata e la restituzione di memoria in eccesso al SO. La cache è priva di blocchi e funziona legata ai core della CPU, ma ricade sul modello di caching legato ai thread in assenza della necessaria funzionalità nel kernel OS (la cache legata alla CPU funziona solo nei recenti kernel di Linux). Il backend supporta sia le normali pagine di memoria sia le pagine di grandi dimensioni (hugepage).

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

Caratteristiche principali di TCMalloc:

  • Allocazione e liberazione rapida della memoria utilizzando la cache. La maggior parte delle operazioni di allocazione della memoria non richiede blocchi, garantendo una buona scalabilità per applicazioni multi-thread ad alta parallelicità;
  • Utilizzo flessibile della memoria, che consente di riutilizzare aree di memoria liberate per oggetti di diverse dimensioni o restituire la memoria al sistema operativo;
  • Bassi costi overhead per ciascun oggetto grazie all'allocazione di pagine di oggetti di dimensioni identiche e a una rappresentazione efficiente degli oggetti di piccole dimensioni. Sono supportate pagine logiche di dimensioni 4KiB, 8KiB, 32KiB e 256KiB. Ad esempio, se si richiedono blocchi di 512 byte di memoria, verrà allocata un'intera pagina di 4KiB per oggetti da 512 byte, che può contenere 8 di tali oggetti;
  • È possibile una regolazione fine attraverso la definizione della dimensione della cache e dei parametri di intensità per il ritorno della memoria al SO;
  • Fornitura di informazioni dettagliate per analizzare l'uso della memoria da parte dell'applicazione.

Fonte: opennet.ru

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