Yaklaşık dört yıllık bir aradan sonra (bkz. "jemalloc her şey») Ayırıcıya ait 5.3.1 sürümünün yayınlanması gerçekleşti. Cemalloc – Parçalanmayı önlemeye ve ölçeklenebilir eşzamanlılığı desteklemeye önem veren bir malloc(3) uygulaması.
Yeni sürüm, hata düzeltmeleri, yeni özellikler, performans optimizasyonları ve taşınabilirlik iyileştirmeleri içeren 390'dan fazla kod değişikliği içeriyor.
Proje C dilinde yazılmıştır ve BSD lisansı altında dağıtılmaktadır.
Yeni özellikler:
- pvalloc(3) desteği.
- Hata ayıklama derlemesinde çift serbest bırakma tespit edildi;
- Bellek eşlemeli ek açıklamayı etkinleştirmek için --enable-pageid derleme seçeneği eklendi.
- Profil oluşturma için maksimum yığın derinliğini kontrol etmek üzere prof_bt_max çalışma zamanı parametresi eklendi;
- getenv yerine secure_getenv kullanmak için --enable-force-getenv derleme seçeneği eklendi;
- sbrk(2) kullanımını devre dışı bırakmak için --disable-dss derleme seçeneği eklendi;
- İş parçacığı önbelleğindeki öğe sayısını kontrol etmek için tcache_ncached_max derleme seçeneği eklendi.
- calloc çağrısı yapılırken ayrılan bellek bloklarını sıfırlamak için çekirdeğin mi yoksa memset'in mi kullanılacağını belirlemek üzere calloc_madvise_threshold çalışma zamanı parametresi eklendi;
- Derleme sırasında /etc/malloc.conf dosyasından veya MALLOC_CONF ortam değişkeninden yapılandırmaların okunmasını devre dışı bırakmak için --disable-user-config derleme zamanı seçeneği eklendi.
- Yeni kullanılabilir boyut hesaplama algoritmasını etkinleştirmek için `disable_large_size_classes` çalışma zamanı parametresi eklendi; bu algoritma, büyük bellek blokları (yani boyutu >= 4 * PAGE olan) tahsis edilirken bellek yükünü en aza indirir.
- `process_madvise` kullanımını etkinleştirdik ve her `madvise` "toplu işleminde" maksimum bellek bölgesi sayısını kontrol etmek için `process_madvise_max_batch` çalışma zamanı parametresini ekledik;
- mallctl arayüzleri eklendi:
- opt.prof_bt_max;
- Arena
- `thread.tcache.max` komutu, geçerli iş parçacığının tcache_max değerini değiştirmek ve almak için kullanılır;
- `thread.tcache.ncached_max.write` ve `thread.tcache.ncached_max.read_sizeclass` fonksiyonları, geçerli iş parçacığının ncached_max değerini değiştirmek ve almak için kullanılır;
- arenas.hugepage, kullanılan hugepage boyutunu döndürür ve ayrıca malloc istatistiklerine de aktarılır;
- `approximate_stats.active` fonksiyonu, mevcut aktif bayt miktarının yaklaşık bir değerini elde etmek için kullanılır; bu değer, alınan diğer istatistiklerle karşılaştırılmamalıdır.
- Birçok hata düzeltildi ve dokümantasyon iyileştirildi.
Kaynak: linux.org.ru
