Após um intervalo de quase quatro anos (ver "jemalloc tudo») ocorreu o lançamento da versão 5.3.1 do alocador Jemalloc – uma implementação de malloc(3) que enfatiza a prevenção de fragmentação e o suporte à concorrência escalável.
A nova versão inclui mais de 390 commits com correções de bugs, novos recursos, otimizações de desempenho e melhorias de portabilidade.
O projeto foi escrito em C e distribuído sob a licença BSD.
Овые возможности:
- Suporte para pvalloc(3).
- Liberação dupla detectada na versão de depuração;
- Adicionada a opção de compilação --enable-pageid para habilitar anotações mapeadas em memória.
- Adicionado o parâmetro de tempo de execução prof_bt_max para controlar a profundidade máxima da pilha para criação de perfis;
- Adicionada opção de compilação --enable-force-getenv para usar getenv em vez de secure_getenv;
- Adicionada opção de compilação --disable-dss para desativar o uso de sbrk(2);
- Adicionada a opção de compilação tcache_ncached_max para controlar o número de itens no cache de threads.
- Adicionado o parâmetro de tempo de execução calloc_madvise_threshold para determinar se o kernel ou o memset é usado para zerar os blocos de memória alocados ao chamar calloc;
- Adicionada a opção de compilação --disable-user-config para desativar a leitura de configurações do arquivo /etc/malloc.conf ou da variável de ambiente MALLOC_CONF em tempo de execução.
- Adicionado o parâmetro de tempo de execução disable_large_size_classes para habilitar o novo algoritmo de cálculo de tamanho disponível, que minimiza a sobrecarga de memória ao alocar grandes blocos de memória, ou seja, com um tamanho >= 4 * PAGE;
- Habilitamos o uso de process_madvise e adicionamos o parâmetro de tempo de execução process_madvise_max_batch para controlar o número máximo de regiões de memória em cada "lote" do madvise;
- Interfaces mallctl adicionadas:
- opt.prof_bt_max;
- arena.
- thread.tcache.max para alterar e obter o tcache_max da thread atual;
- Para alterar e obter o ncached_max da thread atual, utilize os métodos thread.tcache.ncached_max.write e thread.tcache.ncached_max.read_sizeclass;
- arenas.hugepage para retornar o tamanho da hugepage utilizada, também exportado para malloc stats;
- approximate_stats.active para obter um valor aproximado da quantidade atual de bytes ativos, que não deve ser comparado com outras estatísticas recuperadas.
- Muitos erros também foram corrigidos e a documentação foi aprimorada.
Fonte: linux.org.ru
