ไลบรารีการจัดการหน่วยความจำ jemalloc 5.3.1 พร้อมใช้งานแล้ว

สี่ปีหลังจากอัปเดตครั้งก่อน jemalloc 5.3.1 ซึ่งเป็นไลบรารีการจัดการหน่วยความจำ ก็พร้อมใช้งานแล้ว มันนำเสนอการใช้งานฟังก์ชัน malloc ทางเลือกที่ได้รับการปรับให้เหมาะสมเพื่อลดการกระจายตัวของหน่วยความจำและทำงานบนระบบมัลติโปรเซสเซอร์ เพื่อแก้ไขปัญหาการล็อกบนระบบมัลติคอร์ jemalloc ใช้พื้นที่จัดสรรหน่วยความจำแยกต่างหากสำหรับแต่ละคอร์ของ CPU ทำให้สามารถปรับขนาดได้อย่างเป็นเส้นตรงเมื่อจำนวนเธรดเพิ่มขึ้น

ในเดือนมิถุนายน ปี 2025 ผู้เขียนโครงการได้ยุติการบำรุงรักษาและเก็บถาวรคลังเก็บข้อมูล jemalloc แต่การพัฒนาได้กลับมาดำเนินต่อเมื่อเดือนที่แล้วโดย Meta ซึ่งใช้ jemalloc ในโครงสร้างพื้นฐานของตน ไลบรารีนี้ได้รับการพัฒนาขึ้นสำหรับ FreeBSD และถูกใช้เป็นค่าเริ่มต้นในระบบปฏิบัติการนั้นมาตั้งแต่ปี 2005 โค้ดของไลบรารีเขียนด้วยภาษา C และเผยแพร่ภายใต้ใบอนุญาต BSD

ท่ามกลางการเปลี่ยนแปลง:

  • ฟังก์ชัน pvalloc ได้รับการพัฒนาขึ้นแล้ว ซึ่งอาจมีประโยชน์เมื่อต้องการแทนที่ตัวจัดสรรหน่วยความจำของ libc
  • การตรวจจับการเรียกซ้ำสำหรับฟังก์ชัน free() ถูกเปิดใช้งานในเวอร์ชันดีบัก พารามิเตอร์ debug_double_free_max_scan ถูกเพิ่มเข้ามาเพื่อกำหนดขนาดสแต็กที่ใช้สำหรับการสแกน
  • เพิ่มตัวเลือกการสร้าง "--enable-pageid" สำหรับการตั้งค่าแท็กการแมปหน่วยความจำโดยใช้ prctl ร่วมกับแฟล็ก PR_SET_VMA เมื่อเปิดใช้งานแล้ว สามารถตรวจสอบการแมปได้ผ่านทาง /proc/ /แผนที่
  • เพิ่มพารามิเตอร์ "prof_bt_max" ซึ่งช่วยให้คุณสามารถกำหนดความลึกสูงสุดของสแต็กสำหรับการวิเคราะห์ประสิทธิภาพได้
  • เพิ่มตัวเลือกการสร้าง "--enable-force-getenv" เพื่อบังคับให้โค้ดใช้ฟังก์ชัน getenv() ปกติแทนที่จะใช้ฟังก์ชัน secure_getenv()
  • เพิ่มตัวเลือกการสร้าง "--disable-dss" เพื่อปิดการใช้งานฟังก์ชัน sbrk()
  • เพิ่มพารามิเตอร์ "tcache_ncached_max" เพื่อจำกัดจำนวนรายการในแคชของเธรด
  • เพิ่มตัวเลือก "calloc_madvise_threshold" เพื่อกำหนดค่าว่าจะใช้กลไกเคอร์เนล madvise หรือฟังก์ชัน memset ในการล้างหน่วยความจำที่จัดสรรผ่านฟังก์ชัน calloc ให้เป็นศูนย์
  • เพิ่มตัวเลือกการสร้าง "--disable-user-config" เพื่อปิดใช้งานการโหลดการตั้งค่าจากไฟล์ /etc/malloc.conf หรือตัวแปรสภาพแวดล้อม MALLOC_CONF
  • เพิ่มพารามิเตอร์ "process_madvise_max_batch" เพื่อจำกัดจำนวนบล็อกหน่วยความจำสำหรับการดำเนินการแบบกลุ่ม madvise แต่ละครั้ง
  • เพิ่มพารามิเตอร์ "disable_large_size_classes" เพื่อปิดใช้งานอัลกอริธึมการคำนวณขนาดการจัดสรรหน่วยความจำแบบใหม่ ซึ่งช่วยลดภาระเมื่อจัดสรรบล็อกที่มีขนาดใหญ่กว่า 4 หน้าหน่วยความจำ
  • มีการเพิ่มตัวเลือกต่างๆ ลงในยูทิลิตี้ mallctl แล้ว ได้แก่ opt.prof_bt_max, arena.name

ที่มา: opennet.ru

ซื้อโฮสติ้งที่เชื่อถือได้สำหรับไซต์ที่มีการป้องกัน DDoS เซิร์ฟเวอร์ VPS VDS 🔥 ซื้อบริการเว็บโฮสติ้งที่เชื่อถือได้ พร้อมระบบป้องกัน DDoS และเซิร์ฟเวอร์ VPS/VDS | ProHoster