Après presque quatre ans de pause (voir «jemalloc tout») la version 5.3.1 de l'allocateur jemalloc – une implémentation de malloc(3) qui se concentre sur la prévention de la fragmentation et le support de la parallélisation évolutive.
La nouvelle version comprend plus de 390 commits corrigeant des erreurs, ajoutant de nouvelles fonctionnalités, optimisant les performances et améliorant la portabilité.
Le projet est écrit en C et distribué sous licence BSD.
Nouvelles fonctionnalités :
- prise en charge de pvalloc(3).
- détection de double libération de mémoire dans la version de débogage ;
- ajouté l'option de compilation —enable-pageid pour activer l'annotation de la mémoire affichée.
- ajouté un paramètre d'exécution prof_bt_max pour contrôler la profondeur maximale de la pile pour le profilage ;
- ajouté l'option de compilation —enable-force-getenv pour utiliser getenv au lieu de secure_getenv ;
- ajouté l'option de compilation —disable-dss pour désactiver l'utilisation de sbrk(2) ;
- ajouté l'option de compilation tcache_ncached_max pour contrôler le nombre d'éléments dans le cache des threads.
- ajouté un paramètre d'exécution calloc_madvise_threshold pour déterminer si le noyau ou memset est utilisé pour réinitialiser les blocs de mémoire alloués lors de l'appel à calloc ;
- ajouté l'option de compilation —disable-user-config pour désactiver la lecture à l'exécution des configurations à partir du fichier /etc/malloc.conf ou de la variable d'environnement MALLOC_CONF ;
- ajouté un paramètre d'exécution disable_large_size_classes pour garantir le fonctionnement d'un nouvel algorithme de calcul de taille disponible, minimisant les frais de mémoire lors de l'allocation de grands blocs de mémoire, c'est-à-dire de taille >= 4 * PAGE ;
- inclus l'utilisation de process_madvise et ajouté un paramètre d'exécution process_madvise_max_batch pour contrôler le nombre maximum de régions mémoire dans chaque « lot » de madvise ;
- ajouté les interfaces mallctl :
- opt.prof_bt_max ;
- arena..name pour modifier et obtenir les noms d'« arène » ;
- thread.tcache.max pour modifier et obtenir tcache_max du thread actuel ;
- thread.tcache.ncached_max.write et thread.tcache.ncached_max.read_sizeclass pour modifier et obtenir ncached_max du thread actuel ;
- arenas.hugepage pour retourner la taille utilisée de hugepage, également exportée dans les statistiques malloc ;
- approximate_stats.active pour obtenir une valeur approximative du volume actuel d'octets actifs, qui ne doit pas être comparée à d'autres données statistiques obtenues.
- de nombreuses erreurs ont également été corrigées et la documentation améliorée.
Source : linux.org.ru
