Jemalloc возник из статьи Джейсона Эванса о BSDCAN Conference в 2006 году: «Масштабируемая одновременная реализация Malloc для FreeBSD». Джейсон считает, что Phkmalloc (предыдущая реализация Malloc FreeBSD от Kamp (1998)) не учитывает случай многопроцессоров, поэтому у него плохая производительность при многопоточном параллелизме (это истинно), в то время как Jemalloc подходит для управления распределением памяти при многопоточной. С 2007 года он был введен в соответствии с стандартом FreeBSD. Многие программные технологические инновации инициируются FreeBSD. Технология, которая широко используется в FreeBSD, будет медленно импортирована в Linux.
После Redis 2.4 Jemalloc используется по умолчанию для управления памятью; Tengine также интегрирует Jemalloc. Исходя из результатов оценки различными сторонами, Jemalloc показывает, что он не сопоставим с Google Tcmalloc, и оба находятся на самом высоком уровне в поле Memory Manager. Как показано на рисунке ниже:
Самый левый - это Malloc Glibc, а самый правый - Джемаллок. Как видно из таблицы, производительность Джемаллока более чем в два раза больше, чем у Glibc. Очень ошеломляющие различия в производительности. Следовательно, приложения, которые используют Jemalloc, естественно будут намного быстрее. Рядом с Джемаллоком является tcmalloc. Производительность Tcmalloc сильно отличается от этого, причем Jemalloc2.1.0 на 4,5% медленнее. Версия 1.4 Tcmalloc на рисунке теперь достигла версии 2.1, поэтому на самом деле они должны быть несравненными. Основатель Jemalloc Джейсон Эванс также понял это, заявив, что Jemalloc более эффективен на компьютерах выше CPU Core 8.
MySQL Test Test-Jemalloc Управление памятью: http://www.linuxeye.com/linux/1914.html
Jemalloc был добавлен в «Последний исходный код LNMP».
Установите 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./configuremake && make ulstecho '/usr/lib'> lip '> /etc/ld.so.conf.d/local.confldconfig
Оптимизируйте MySQL с Jemalloc
Метод 1:
Метод компиляции MySQL/MARIDDB 5.5 добавьте следующие параметры, когда Cmake Precompilation
-Dcmake_exe_linker_flags = " -ljemalloc" -dwith_safemalloc = off
Метод 2:
Напрямую загружать и изменить mysqld_safe
Найдите файл/usr/local/mysql/bin/mysqld_safe
Добавить под #Executing mysqld_safe
Ld_preload =/usr/local/lib/libjemalloc.so
Перезагрузить MySQL
Используйте следующий код для автоматического изменения файла mysqld_safe
sed -i 's@выполняет mysqld_safe@выполнение mysqld_safe/nexport ld_peload =/usr/local/lib/libjemalloc.so@'/usr/local/mysql/bin/mysqld_safeservice restart mysqld restart/local/mysql/bin/mysqld_safeservice
Оптимизировать Nginx с Jemalloc
Добавьте следующие параметры при составлении Nginx:
--with-ld-opt = "-ljemalloc"
Конкретная реализация:
CD LNMP/SRC/NGINX-1.4.2Make Clean./Configure-prefix =/usr/local/nginx-USER = www --Group = www/-with-http_stub_status_modul /-with-http_gzip_static_module-with-ld-opt = "-ljemalloc" Make && make install
Убедитесь, что Jemalloc Optimization Nginx эффективна, следующим образом
lsof -n | Греп Джемаллок