Jemalloc est originaire de la conférence Jason Evans sur la conférence BSDCAN en 2006: "Une implémentation de Malloc simultanée évolutive pour FreeBSD". Jason estime que Phkmalloc (la précédente implémentation de Malloc de FreeBSD par Kamp (1998)) ne considère pas le cas des multiprocesseurs, il a donc de mauvaises performances sous la concurrence multithread (c'est vrai), tandis que Jemalloc convient à la gestion de l'allocation de la mémoire sous plusieurs moustithons. Depuis 2007, il a été introduit dans la norme FreeBSD. De nombreuses innovations sur la technologie logicielle sont lancées par FreeBSD. La technologie largement utilisée dans FreeBSD sera lentement importée dans Linux.
Après Redis 2.4, Jemalloc est utilisé par défaut pour la gestion de la mémoire; Tengine intègre également Jemalloc. D'après les résultats des évaluations de diverses parties, Jemalloc montre qu'il n'est pas comparable à Google TCMalloc, et les deux sont au plus haut niveau dans le champ Memory Manager. Comme indiqué dans la figure ci-dessous:
Le plus à gauche est malloc de GLIBC, et le plus à droite est Jemalloc. Comme le montre le graphique, la performance de Jemalloc est plus du double de celle de GLIBC. Différences de performances très écrasantes. Par conséquent, les applications qui utilisent Jemalloc seront naturellement beaucoup plus rapides. À côté de Jemalloc se trouve tcmalloc. Les performances de TCMALLOC sont très différentes de celles-ci, Jemalloc2.1.0 étant plus lentement. La version 1.4 de TCMalloc sur la figure a maintenant atteint la version 2.1, donc en fait, les deux devraient être incomparables. Le fondateur de Jemalloc, Jason Evans, a également réalisé cela, disant que Jemalloc est plus efficace sur les ordinateurs au-dessus du CPU Core 8.
MySQL Performance Test-Jemalloc Memory Management: http://www.linuxeye.com/linux/1914.html
Jemalloc a été ajouté au "Package d'installation en un clic du code LNMP LNMP" en option "
Installer Jemalloc
cd lnmp / srcwget http://www.canonware.com/download/jemoc/jemalloc-3.4.0.tar.bz2tar xjf jemalloc-3.4.4 /etc/ld.so.conf.d/local.confldconfig
Optimiser MySQL avec Jemalloc
Méthode 1:
Méthode de compilation MySQL / MARIDDB 5.5, ajoutez les paramètres suivants lorsque la précompilation CMake
-Dcmake_exe_linker_flags = "- lJemalloc" -dwith_safemalloc = off
Méthode 2:
Chargez et modifiez directement MySQLD_SAFE
Trouver un fichier / usr / local / mysql / bin / mysqld_safe
Ajouter sous #Executing mysqld_safe
Ld_preload = / usr / local / lib / libjemalloc.so
Redémarrer Mysql
Utilisez le code suivant pour modifier automatiquement le fichier mysqld_safe
sed -i's @ exécuter mysqld_safe @ exécuter mysqld_safe / nexport ld_preload = / usr / local / lib / libjemalloc.so @ '/ usr / local / mysql / bin / mysqld_safeSevice mysqld restart
Optimiser Nginx avec Jemalloc
Ajoutez les paramètres suivants lors de la compilation de nginx:
--with-ld-opt = "- lJemalloc"
Implémentation spécifique:
CD LNMP / SRC / NGINX-1.4.2Make Clean./configure ---refix = / usr / local / nginx --user = www --group = www / - with-http_stub_status_module --with-http_ssl_module--with-http_flv_module / - with-http_gzip_static_module --with-ld-opt = "- lJemalloc" Make && faire installer
Vérifiez que l'optimisation Jemalloc Nginx est efficace, comme suit
lsof -n | grep jemalloc