Jemalloc มีต้นกำเนิดมาจากบทความของ Jason Evans ในการประชุม BSDCAN ในปี 2549: "การใช้งาน Malloc ที่ปรับขนาดได้พร้อมกันสำหรับ FreeBSD" Jason เชื่อว่า PHKMALLOC (การใช้งาน MALLOC ก่อนหน้าของ FREEBSD โดย KAMP (1998)) ไม่ได้พิจารณากรณีของตัวประมวลผลมัลติโปรเซสเซอร์ดังนั้นจึงมีประสิทธิภาพที่ไม่ดีภายใต้การพร้อมกันแบบมัลติเธรด (นี่เป็นเรื่องจริง) ในขณะที่ Jemalloc เหมาะสำหรับการจัดการการจัดสรรหน่วยความจำภายใต้ ตั้งแต่ปี 2550 มีการแนะนำภายใต้มาตรฐาน FreeBSD นวัตกรรมเทคโนโลยีซอฟต์แวร์จำนวนมากเริ่มต้นโดย FreeBSD เทคโนโลยีที่ใช้กันอย่างแพร่หลายใน FreeBSD จะถูกนำเข้าสู่ Linux อย่างช้าๆ
หลังจาก Redis 2.4 แล้ว Jemalloc ถูกใช้โดยค่าเริ่มต้นสำหรับการจัดการหน่วยความจำ Tengine ยังรวม Jemalloc จากผลลัพธ์ของการประเมินผลโดยฝ่ายต่างๆ Jemalloc แสดงให้เห็นว่ามันไม่สามารถเทียบได้กับ Google TCMalloc และทั้งคู่อยู่ในระดับสูงสุดในฟิลด์ Memory Manager ดังที่แสดงในรูปด้านล่าง:
ด้านซ้ายสุดคือ Malloc ของ Glibc และด้านขวาสุดคือ Jemalloc ดังที่เห็นได้จากแผนภูมิประสิทธิภาพของ Jemalloc นั้นมากกว่าสองเท่าของ Glibc ความแตกต่างของประสิทธิภาพที่ท่วมท้นมาก ดังนั้นแอปพลิเคชันที่ใช้ Jemalloc จะเร็วขึ้นมาก ถัดจาก Jemalloc คือ tcmalloc ประสิทธิภาพของ TCMALLOC นั้นแตกต่างจากมันมากโดย JEMALLOC2.1.0 ช้าลง 4.5% TCMALLOC รุ่น 1.4 ในรูปได้มาถึงเวอร์ชัน 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 http://www.canonware.com/download/jemalloc/jemalloc-3.4.0.tar.bz2tar xjf jemalloc-3.4.0.tar.bz2cd jemalloc-3.4.0./configuremake /etc/ld.so.conf.d/local.confldconfig
เพิ่มประสิทธิภาพ mySQL ด้วย jemalloc
วิธีที่ 1:
วิธีการรวบรวม mysql/mariddb 5.5 เพิ่มพารามิเตอร์ต่อไปนี้เมื่อ cMake preompilation
-dcmake_exe_linker_flags = " -ljemalloc" -dwith_safemalloc = ปิด
วิธีที่ 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_preload =/usr/local/lib/libjemalloc.so@'/usr/local/mysql/bin/mysqld_safeservice mysqld
เพิ่มประสิทธิภาพ 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_module--with-http_sl_module /-ด้วย http_gzip_static_module--with-ld-opt = "-ljemalloc" ทำให้ && ทำการติดตั้ง
ตรวจสอบว่าการเพิ่มประสิทธิภาพ jemalloc nginx นั้นมีประสิทธิภาพดังนี้
lsof -n | Grep Jemalloc