לאחר הפסקה של כמעט ארבע שנים (ראה "הכל ג'מאללוק») שחרור 5.3.1 של המקצה התרחש ג'מלוק – יישום של malloc(3) המדגיש מניעת פרגמנטציה ותמיכה במקביליות ניתנת להרחבה.
הגרסה החדשה כוללת מעל 390 קומיטים עם תיקוני באגים, תכונות חדשות, אופטימיזציות ביצועים ושיפורי ניידות.
הפרויקט כתוב בשפת C ומופץ תחת רישיון BSD.
תכונות חדשות:
- תמיכה ב-pvalloc(3).
- זוהה פנוי כפול בבניית ניפוי שגיאות;
- נוספה אפשרות קומפילציה של --enable-pageid כדי לאפשר ביאור ממופה זיכרון.
- נוסף פרמטר זמן ריצה prof_bt_max כדי לשלוט בעומק המחסנית המרבי עבור יצירת פרופילים;
- נוספה אפשרות קומפילציה --enable-force-getenv לשימוש ב-getenv במקום secure_getenv;
- נוספה אפשרות קומפילציה של --disable-dss כדי להשבית את השימוש ב-sbrk(2);
- נוספה אפשרות קומפילציה tcache_ncached_max כדי לשלוט במספר הפריטים במטמון השלבים.
- נוסף פרמטר זמן ריצה calloc_madvise_threshold כדי לקבוע האם הליבה או קבוצת ה-memset משמשים לאיפוס בלוקי זיכרון שהוקצו בעת קריאה ל- calloc;
- נוספה האפשרות --disable-user-config בזמן קומפילציה כדי להשבית קריאת תצורות מהקובץ /etc/malloc.conf או ממשתנה הסביבה MALLOC_CONF בזמן ריצה.
- נוסף פרמטר זמן הריצה disable_large_size_classes כדי לאפשר את אלגוריתם חישוב הגודל הזמין החדש, אשר ממזער את תקורת הזיכרון בעת הקצאת בלוקי זיכרון גדולים, כלומר עם גודל >= 4 * PAGE;
- הפעלת השימוש ב-process_madvise והוספת פרמטר זמן הריצה process_madvise_max_batch כדי לשלוט במספר המרבי של אזורי זיכרון בכל "batch" של madvise;
- ממשקי mallctl נוספו:
- opt.prof_bt_max;
- arena.
- thread.tcache.max כדי לשנות ולקבל את tcache_max של השרשור הנוכחי;
- thread.tcache.ncached_max.write ו-thread.tcache.ncached_max.read_sizeclass כדי לשנות ולקבל את ה-ncached_max של השרשור הנוכחי;
- arenas.hugepage כדי להחזיר את גודל הדף הגדול שבו נעשה שימוש, וגם מיוצא לסטטיסטיקות malloc;
- approximate_stats.active כדי לקבל ערך משוער של כמות הבייטים הפעילים הנוכחית, שאין להשוות אותו לסטטיסטיקות שאוחזרו.
- כמו כן תוקנו באגים רבים והתיעוד שופר.
מקור: linux.org.ru
