O Google publicou uma nova versão do sistema de alocação de memória TCMalloc

A empresa Google apresentou nova versão do sistema de alocação de memória TCMalloc, que é utilizado em muitos projetos internos do Google. O código do TCMalloc está escrito em C++ e é distribuído sob licença Apache. Para funcionar, é necessário um compilador que suporte C++17 para a linguagem C++ e C11 para a linguagem C (gcc 9.2+ ou clang 9.0+). Das sistemas operacionais suportado somente Linux (x86, PPC).

É notável que desde 2005 exista outra versão do tcmalloc, que foi fornecida como parte do pacote gperftools (Google Performance Tools). Esses são dois diferentes projetos que têm raízes comuns. O novo TCMalloc é mais uma tentativa de abrir o código dos esforços internos atuais do Google, mas ainda não tem como foco oferecer um ABI estável e suporte de uma ampla gama de sistemas operacionais. O suporte ao antigo tcmalloc do gperftools será continuado, mas novas funcionalidades, como a ligação do cache ao CPU, não estão previstas para serem incorporadas.

O TCMalloc inclui a implementação da função malloc() de C e do operador 'new' de C++, otimizados para alcançar alto desempenho e aplicação em aplicativos multithread. O TCMalloc também oferece recursos de introspecção e perfilamento, permitindo que o aplicativo obtenha informações detalhadas sobre o uso de memória no heap. O código utiliza otimizações baseadas nas modernas capacidades da linguagem C++, como
o operador delete com indicação de tamanho do C++14 e a alocação de memória com alinhamento do C++17.

TCMalloc é composto é composto por três componentes: um front-end com cache para rápida alocação e liberação de memória, uma camada para preencher o cache do front-end e um back-end que realiza operações como obter memória do sistema operacional, gerenciar grandes blocos de memória não utilizada e devolver memória extra ao SO. O cache é livre de bloqueios e opera vinculado aos núcleos da CPU, mas recua para um modelo de cache vinculado a threads caso a funcionalidade necessária não esteja disponível no núcleo do SO (o vínculo de cache ao CPU funciona apenas em núcleos Linux recentes). O back-end suporta operações tanto com páginas de memória normais quanto com páginas de tamanho aumentado (hugepage).

O Google publicou uma nova versão do sistema de alocação de memória TCMalloc

Principais características do TCMalloc:

  • Alocação e liberação rápida de memória usando cache. A maioria das operações de alocação de memória não requer bloqueio, o que garante boa escalabilidade para aplicativos multithread com alta paralelização de tarefas;
  • Uso flexível de memória, permitindo reutilizar áreas de memória liberadas para objetos de tamanhos variados ou retornar a memória ao sistema operacional;
  • Baixo overhead por objeto devido à alocação de páginas de objetos de tamanho uniforme e representação eficiente de pequenos objetos. Suportadas páginas lógicas com tamanhos de 4KiB, 8KiB, 32KiB e 256KiB. Por exemplo, ao solicitar blocos de 512 bytes de memória, uma página inteira de 4KiB será alocada para objetos de 512 bytes, na qual poderão caber 8 desses objetos;
  • É possível afinar os parâmetros por meio da definição do tamanho do cache e das configurações de intensidade de devolução da memória ao SO;
  • Fornecimento de informações detalhadas para análise do uso de memória pelo aplicativo.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster