نشأت Jemalloc من ورقة Jason Evans في مؤتمر BSDCAN في عام 2006: "تطبيق Malloc متزامن للتطوير لـ FreeBSD". يعتقد جايسون أن Phkmalloc (تطبيق Malloc السابق من FreebsD من قبل Kamp (1998)) لا يعتبر حالة المعالجات المتعددة ، لذلك فإنه يتمتع بأداء ضعيف في ظل استنكار تعدد مؤشرات الترابط (هذا صحيح) ، في حين أن Jemalloc مناسب لإدارة تخصيص الذاكرة تحت MultiThered. منذ عام 2007 ، تم تقديمه بموجب معيار FreeBSD. يتم بدء العديد من ابتكارات تكنولوجيا البرامج بواسطة FreeBSD. سيتم استيراد التكنولوجيا التي يتم استخدامها على نطاق واسع في FreeBSD ببطء إلى Linux.
بعد Redis 2.4 ، يتم استخدام Jemalloc افتراضيًا لإدارة الذاكرة ؛ Tengine أيضا دمج Jemalloc. من نتائج التقييمات التي أجراها مختلف الأطراف ، يوضح Jemalloc أنه لا يمكن مقارنته بـ Google TCMalloc ، وكلاهما في أعلى مستوى في مجال مدير الذاكرة. كما هو مبين في الشكل أدناه:
أقصى اليسار هو glibc's malloc ، واليمين هو jemalloc. كما يتضح من الرسم البياني ، فإن أداء Jemalloc أكثر من ضعف عرض GLIBC. اختلافات في الأداء الساحقة للغاية. لذلك ، فإن التطبيقات التي تستخدم Jemalloc ستكون بشكل طبيعي أسرع بكثير. بجانب jemalloc هو tcmalloc. يختلف أداء TCMALLOC تمامًا عن ذلك ، حيث كان Jemalloc2.1.0 أبطأ بنسبة 4.5 ٪. لقد وصل إصدار 1.4 من TCMALLOC على الشكل الآن إلى الإصدار 2.1 ، لذلك في الواقع ، يجب أن يكون الاثنان لا يضاهى. أدرك مؤسس Jemalloc جيسون إيفانز ذلك أيضًا ، قائلاً إن Jemalloc أكثر كفاءة على أجهزة الكمبيوتر فوق CPU Core 8.
MySQL Performance Test-Jemalloc Memory Management: http://www.linuxeye.com/linux/1914.html
تمت إضافة Jemalloc إلى "حزمة التثبيت المصدر LNMP الأخيرة واحدة" كخيار "كخيار
تثبيت Jemalloc
CD LNMP/SRCWGET /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@evelding mysqld_safe@تنفيذ mysqld_safe/nexport ld_preload =/usr/local/lib/libjemalloc.so@'/usr/local/mysql/bin/mysqld_safeservice mysqld restart
تحسين nginx مع jemalloc
أضف المعلمات التالية عند تجميع nginx:
-مع lld-opt = "-ljemalloc"
تطبيق محدد:
CD LNMP/SRC/NGINX-1.2.2Make Clean./Configure-prefix =/usr/local/nginx-user = www-group = www/-with-http_stub_status_module-with-http_ssl_module-with-http_flv_mode /-مع http_gzip_static_module-with-ld-opt = "-ljemalloc" make && make install
تحقق من أن Jemalloc Optimization Nginx فعال ، على النحو التالي
lsof -n | جريب جيمالوك