Jemalloc berasal dari Makalah Jason Evans tentang Konferensi BSDCAN pada tahun 2006: "Implementasi Malloc bersamaan yang dapat diskalakan untuk FreeBSD". Jason percaya bahwa PhKmalloc (implementasi malloc Freebsd sebelumnya oleh KAMP (1998)) tidak mempertimbangkan kasus multiprosesor, sehingga memiliki kinerja yang buruk di bawah kesesuaian multithreaded (ini benar), sementara Jemalloc cocok untuk manajemen alokasi memori di bawah multithreaded. Sejak 2007, telah diperkenalkan di bawah standar FreeBSD. Banyak inovasi teknologi perangkat lunak dimulai oleh FreeBSD. Teknologi yang banyak digunakan dalam FreeBSD akan secara perlahan diimpor ke Linux.
Setelah Redis 2.4, Jemalloc digunakan secara default untuk manajemen memori; Tengine juga mengintegrasikan Jemalloc. Dari hasil evaluasi oleh berbagai pihak, Jemalloc menunjukkan bahwa itu tidak sebanding dengan Google TCMALLOC, dan keduanya berada pada level tertinggi di bidang Manajer Memori. Seperti yang ditunjukkan pada gambar di bawah ini:
Yang paling kiri adalah Malloc Glibc, dan yang paling kanan adalah Jemalloc. Seperti yang dapat dilihat dari bagan, kinerja Jemalloc lebih dari dua kali lipat dari GLIBC. Perbedaan kinerja yang sangat luar biasa. Oleh karena itu, aplikasi yang menggunakan Jemalloc secara alami akan jauh lebih cepat. Di sebelah Jemalloc adalah tcmalloc. Kinerja TCMALLOC sangat berbeda darinya, dengan Jemalloc2.1.0 menjadi 4,5% lebih lambat. Versi 1.4 TCMALLOC pada gambar sekarang telah mencapai versi 2.1, jadi pada kenyataannya, keduanya harus tidak ada tandingannya. Pendiri Jemalloc Jason Evans juga menyadari hal ini, mengatakan bahwa Jemalloc lebih efisien pada komputer di atas CPU Core 8.
MySQL Performance Test-Jemalloc Manajemen Memori: http://www.linuxeye.com/linux/1914.html
Jemalloc telah ditambahkan ke "Paket Instalasi Kode Sumber One-Klik Terbaru LNMP" sebagai opsi
Instal 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 installecho '/usr/local/lib' > /etc/ld.so.conf.d/local.confldconfig
Mengoptimalkan mysql dengan jemalloc
Metode 1:
Metode Kompilasi MySQL/MaridDB 5.5, tambahkan parameter berikut saat CMake Precompilation
-Dcmake_exe_linker_flags = " -ljemalloc" -dwith_safemalloc = off
Metode 2:
Memuat langsung dan memodifikasi mysqld_safe
Temukan file/usr/local/mysql/bin/mysqld_safe
Tambahkan di bawah #Executing mysqld_safe
Ld_preload =/usr/local/lib/libjemalloc.so
Restart mysql
Gunakan kode berikut untuk secara otomatis memodifikasi file mysqld_safe
sed -i 's@executing mysqld_safe@executing mysqld_safe/nexport LD_PRELOAD=/usr/local/lib/libjemalloc.so@' /usr/local/mysql/bin/mysqld_safeservice mysqld restart
Optimalkan nginx dengan jemalloc
Tambahkan parameter berikut saat menyusun Nginx:
-dengan-ld-opt = "-ljemalloc"
Implementasi spesifik:
cd lnmp/src/nginx-1.4.2make clean./configure --prefix =/usr/local/nginx --user = www --group = www/-with-http_stub_status_module ---dnttp_ssl_module --with-htttp_flule ---wrv_ssl_module --with-http_flule ---wrvedp_ssl_module ---with-http_flule ---wvoDule /-dengan http_gzip_static_module --with-ld-opt = "-ljemalloc" make && make install
Verifikasi bahwa optimasi jemalloc nginx efektif, sebagai berikut
lsof -n | Grep Jemalloc