Jemalloc originou -se do artigo de Jason Evans sobre a conferência BSDCAN em 2006: "Uma implementação simultânea de Maloc escalável para FreeBSD". Jason acredita que Phkmalloc (implementação anterior do FreeBSD do Malloc por Kamp (1998)) não considera o caso de multiprocessadores, por isso tem um desempenho ruim sob concorrência multithread (isso é verdade), enquanto o Jemalloc é adequado para gerenciamento de alocação de memória sob multithreaded. Desde 2007, foi introduzido sob o padrão FreeBSD. Muitas inovações em tecnologia de software são iniciadas pelo FreeBSD. A tecnologia amplamente usada no FreeBSD será importada lentamente para o Linux.
Após o Redis 2.4, o Jemalloc é usado por padrão para gerenciamento de memória; Tengine também integra Jemalloc. A partir dos resultados das avaliações de várias partes, o Jemalloc mostra que não é comparável ao Google TCMalloc e ambos estão no nível mais alto no campo Gerenciador de Memory. Como mostrado na figura abaixo:
O mais à esquerda é o Malloc do Glibc, e o mais à direita é Jemalloc. Como pode ser visto no gráfico, o desempenho de Jemalloc é mais do que o dobro do Glibc. Diferenças de desempenho muito esmagadoras. Portanto, os aplicativos que usam Jemalloc serão naturalmente muito mais rápidos. Ao lado de Jemalloc é o tcmalloc. O desempenho do TCMALLOC é muito diferente, com o Jemalloc2.1.0 sendo 4,5% mais lento. A versão 1.4 do TCMalloc na figura chegou à versão 2.1, então, de fato, os dois devem ser incomparáveis. O fundador da Jemalloc, Jason Evans, também percebeu isso, dizendo que Jemalloc é mais eficiente em computadores acima do CPU Core 8.
MySQL Performance Test-Jemalloc Memory Management: http://www.linuxeye.com/linux/1914.html
Jemalloc foi adicionado ao "LNMP mais recente pacote de instalação do código fonte" como uma opção
Instale Jemalloc
CD lnmp/srcwget http://www.canonware.com/download/jemalloc/jemalloc-3.4.0.tar.bz2tar xjf jemalloc-3.4.0.tar.bz2cd jemall-3.0./configuremake & & Faça a instalação '/usalr. /etc/ld.so.conf.d/local.confldconfig
Otimize MySQL com Jemalloc
Método 1:
Método de compilação MySQL/MARIDDB 5.5, adicione os seguintes parâmetros quando a pré -compilação do CMake
-Dcmake_exe_linker_flags = " -ljemalloc" -dwith_safemalloc = off
Método 2:
Carregue diretamente e modifique mysqld_safe
Encontre file/usr/local/mysql/bin/mysqld_safe
Adicione em #Executing mysqld_safe
Ld_preload =/usr/local/libjemalloc.so
Reinicie o mysql
Use o código a seguir para modificar automaticamente o arquivo mysqld_safe
sed -i@executando mysqld_safe@executando mysqld_safe/nexport ld_preload =/usr/local/libjemalloc.so@'/usr/local/mysql/bin/mysqld_safeservice mysqld reestart
Otimize Nginx com Jemalloc
Adicione os seguintes parâmetros ao compilar Nginx:
---with-ld-opt = "-ljemalloc"
Implementação específica:
CD lnmp/src/nginx-1.4.2Make limpo./configure --prefix =/usr/local/nginx --User = www --group = www/-com http_stub_status_module ---with-http_ssl_module-with-dttp_flvp_flvp_flvp_flvp_flvp_flvp_flvp_flvp_flvp_flvp_flvp_flvp_flvp_flvp_flvp_flvp_flvp_flvp_flvp_flvp_flvp_flvp_flvp_flvp_flvp_flvp_flvp_flvp_flvp_flvp_flvp_flvp_flvp_flvp_flvp_flvp_flvp_flvp) /-com http_gzip_static_module ---with-ld-opt = "-ljemalloc" make && make install
Verifique se Jemalloc otimização nginx é eficaz, como segue
lsof -n | Grep Jemalloc