Μετά από ένα διάλειμμα σχεδόν τεσσάρων ετών (βλ.jemalloc τα πάντα») πραγματοποιήθηκε η έκδοση 5.3.1 του εκχωρητή jemalloc – μια υλοποίηση του malloc(3) που δίνει έμφαση στην πρόληψη του κατακερματισμού και στην υποστήριξη για επεκτάσιμη ταυτόχρονη χρήση.
Η νέα έκδοση περιλαμβάνει πάνω από 390 commits με διορθώσεις σφαλμάτων, νέες δυνατότητες, βελτιστοποιήσεις απόδοσης και βελτιώσεις φορητότητας.
Το έργο είναι γραμμένο σε 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 για τον έλεγχο του μέγιστου αριθμού περιοχών μνήμης σε κάθε "παρτίδα" madvise.
- Προστέθηκαν διεπαφές mallctl:
- opt.prof_bt_max;
- αρένα.
- thread.tcache.max για να αλλάξετε και να λάβετε το tcache_max του τρέχοντος νήματος.
- thread.tcache.ncached_max.write και thread.tcache.ncached_max.read_sizeclass για να αλλάξετε και να λάβετε το ncached_max του τρέχοντος νήματος.
- arenas.hugepage για να επιστρέψει το χρησιμοποιημένο μέγεθος hugepage, που επίσης εξάγεται στα malloc stats.
- approximate_stats.active για να λάβετε μια κατά προσέγγιση τιμή του τρέχοντος αριθμού ενεργών byte, η οποία δεν πρέπει να συγκριθεί με άλλα ανακτημένα στατιστικά στοιχεία.
- Πολλά σφάλματα έχουν επίσης διορθωθεί και η τεκμηρίωση έχει βελτιωθεί.
Πηγή: linux.org.ru
