Jemalloc se originó en el artículo de Jason Evans sobre la Conferencia BSDCAN en 2006: "Una implementación concurrente de malloc concurrente para FreeBSD". Jason cree que PHKMALLOC (implementación previa de MALLOC de FreeBSD por KAMP (1998)) no considera el caso de los multiprocesadores, por lo que tiene un bajo rendimiento bajo concurrencia multiproceso (esto es cierto), mientras que Jemalloc es adecuado para la gestión de asignación de memoria bajo multithRoaded. Desde 2007, se ha introducido bajo el estándar FreeBSD. Las innovaciones de tecnología de software son iniciadas por FreeBSD. La tecnología que se usa ampliamente en FreeBSD se importará lentamente a Linux.
Después de Redis 2.4, Jemalloc se usa de forma predeterminada para la administración de memoria; Tengine también integra Jemalloc. De los resultados de las evaluaciones de varias partes, Jemalloc muestra que no es comparable a Google TCMALLOC, y ambos están en el nivel más alto en el campo Memory Manager. Como se muestra en la figura a continuación:
La izquierda más a la izquierda es el malloc de GLIBC, y la derecha es Jemalloc. Como se puede ver en la tabla, el rendimiento de Jemalloc es más del doble que el de GLIBC. Diferencias de rendimiento muy abrumadoras. Por lo tanto, las aplicaciones que usan Jemalloc serán naturalmente mucho más rápidas. Al lado de Jemalloc está TCMalloc. El rendimiento de TCMALLOC es muy diferente al mismo, con Jemalloc2.1.0 un 4.5% más lento. La versión 1.4 de TCMalloc en la figura ahora ha alcanzado la versión 2.1, por lo que, de hecho, los dos deberían ser incomparables. El fundador de Jemalloc, Jason Evans, también se dio cuenta de esto, diciendo que Jemalloc es más eficiente en las computadoras por encima de CPU Core 8.
Mysql Performance Test-Jemalloc Memory Management: http://www.linuxeye.com/linux/1914.html
Jemalloc se ha agregado al "Paquete de instalación de un solo clic del código fuente LNMP" como opción
Instalar jemalloc
CD lnmp/srcwget http://www.canonware.com/download/jemalloc/jemalloc-3.4.0.tar.bz2tar xjf jemalloc-3.4.0.tar.bz2cd jemalloc-3.4.0./configuake && hacer installecho '/usr/local/liB'>> /etc/ld.so.conf.d/local.confldconfig
Optimizar mysql con jemalloc
Método 1:
Método de compilación MySQL/MARIDDB 5.5, agregue los siguientes parámetros cuando la precompilación de CMake
-Dcmake_exe_linker_flags = " -ljemalloc" -dwith_safemalloc = apagado
Método 2:
Cargar directamente y modificar mysqld_safe
Buscar archivo/usr/local/mysql/bin/mysqld_safe
Agregar en #executando mysqld_safe
Ld_preload =/usr/local/lib/libjemalloc.so
Reiniciar mysql
Use el siguiente código para modificar automáticamente el archivo mysqld_safe
Sed -i 's@ejecutando mysqld_safe@ejecutando mysqld_safe/nexport ld_preload =/usr/local/lib/libjemalloc.so@'/usr/local/mysql/bin/mysqld_safeservice mysqld reiniciar
Optimizar nginx con jemalloc
Agregue los siguientes parámetros al compilar nginx:
--with-ld-opt = "-ljemalloc"
Implementación específica:
CD lnmp/src/nginx-1.4.2make limpio./configure --prefix =/usr/local/nginx --user = www --group = www/-with-http_stub_status_module --with-http_ssl_module --with-http_flv_module /-con http_gzip_static_module --with-d-opt = "-ljemalloc" make && make install
Verifique que Jemalloc Optimization Nginx sea efectivo, de la siguiente manera
LSOF -n | grep jemalloc