Após uma pausa de quase quatro anos (veja "jemalloc tudo") foi lançado o 5.3.1 do alocador jemalloc – uma implementação de malloc(3) que foca na prevenção de fragmentação e no suporte a paralelismo escalável.
A nova versão inclui mais de 390 commits com correções de bugs, novas funcionalidades, otimizações de desempenho e melhorias de portabilidade.
O projeto é escrito em C e é distribuído sob a licença BSD.
Novas funcionalidades:
- suporte a pvalloc(3).
- detecção de dupla liberação de memória na versão de depuração;
- adicionada a opção de compilação —enable-pageid para incluir a anotação da memória mapeada.
- adicionado o parâmetro runtime prof_bt_max para controlar a profundidade máxima da pilha para profiling;
- adicionada a opção de compilação —enable-force-getenv para usar getenv em vez de secure_getenv;
- adicionada a 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 a quantidade de elementos no cache de threads.
- adicionado o parâmetro runtime calloc_madvise_threshold para determinar se o kernel ou memset é usado para zerar blocos de memória alocados ao chamar calloc;
- adicionada a opção de compilação —disable-user-config para desativar a leitura em tempo de execução de configurações do arquivo /etc/malloc.conf ou da variável de ambiente MALLOC_CONF;
- adicionado o parâmetro runtime disable_large_size_classes para garantir o funcionamento do novo algoritmo de cálculo do tamanho disponível, que minimiza a sobrecarga de memória ao alocar grandes blocos de memória, ou seja, com tamanho >= 4 * PAGE;
- incluído o uso de process_madvise e adicionado o parâmetro runtime process_madvise_max_batch para controlar o máximo de regiões de memória em cada "lote" madvise;
- adicionados interfaces mallctl:
- opt.prof_bt_max;
- arena..name para alterar e obter os nomes das "arenas";
- thread.tcache.max para alterar e obter tcache_max do thread atual;
- thread.tcache.ncached_max.write e thread.tcache.ncached_max.read_sizeclass para alterar e obter ncached_max do thread atual;
- arenas.hugepage para retornar o tamanho usado de hugepage, também exportando para as estatísticas de malloc;
- approximate_stats.active para obter um valor aproximado do volume atual de bytes ativos, que não deve ser comparado com outros dados estatísticos obtidos.
- também foram corrigidos muitos bugs e melhorada a documentação.
Fonte: linux.org.ru
