La bibliothèque de gestion de la mémoire jemalloc 5.3.1 est maintenant disponible

Quatre ans après la publication de la dernière mise à jour, une nouvelle version de la bibliothèque de gestion de la mémoire jemalloc 5.3.1 est disponible, offrant une implémentation alternative des fonctions malloc, optimisée pour réduire la fragmentation et fonctionner sur des systèmes multiprocesseurs. Pour résoudre les problèmes de verrouillage sur les systèmes multicœurs, jemalloc utilise une zone de répartition de mémoire isolée pour chaque cœur de CPU, ce qui permet d'obtenir une évolutivité linéaire avec l'augmentation du nombre de threads.

En juin 2025, l'auteur du projet a cessé le support et a transféré le dépôt jemalloc en mode archive, mais il y a un mois, le développement a repris par la société Meta, qui utilise jemalloc dans son infrastructure. À l'origine, la bibliothèque a été développée pour FreeBSD et est utilisée par défaut dans ce système d'exploitation depuis 2005. Le code de la bibliothèque est écrit en C et est distribué sous la licence BSD.

Parmi les changements :

  • La fonction pvalloc a été implémentée, ce qui peut être utile lors du remplacement de l'allocateur de mémoire libc.
  • Les versions de débogage incluent un mode de détection des doubles appels de la fonction free(). Pour configurer la taille de la pile dans le cadre de laquelle le scan est effectué, un paramètre debug_double_free_max_scan a été ajouté.
  • Une option de compilation «—enable-pageid» a été ajoutée pour définir des tags lors du mapping de la mémoire, en utilisant prctl avec le drapeau PR_SET_VMA. Une fois activé, le mapping peut être suivi via /proc//maps.
  • Un paramètre «prof_bt_max» a été ajouté, permettant de définir la profondeur maximale de la pile pour le profiling.
  • Une option de compilation «—enable-force-getenv» a été ajoutée pour utiliser dans le code la fonction standard getenv() au lieu de la fonction protégée secure_getenv().
  • Une option de compilation «—disable-dss» a été ajoutée pour désactiver l'utilisation de la fonction sbrk().
  • Un paramètre «tcache_ncached_max» a été ajouté pour limiter le nombre d'éléments dans le cache des threads.
  • Un paramètre «calloc_madvise_threshold» a été ajouté pour configurer l'utilisation du mécanisme du noyau madvise ou de la fonction memset pour zéro la mémoire allouée via la fonction calloc.
  • Une option de compilation «—disable-user-config» a été ajoutée pour désactiver le chargement des réglages à partir du fichier /etc/malloc.conf ou de la variable d'environnement MALLOC_CONF.
  • Un paramètre «process_madvise_max_batch» a été ajouté pour limiter le nombre de blocs de mémoire pour chaque opération batch madvise.
  • Un paramètre « disable_large_size_classes » a été ajouté pour désactiver le nouvel algorithme de calcul de la taille de mémoire allouée, réduisant les frais généraux lors de l'allocation de blocs de plus de 4 pages de mémoire.
  • Des options ont été ajoutées à l'outil mallctl : opt.prof_bt_max, arena.<i>.name, thread.tcache.max, thread.tcache.ncached_max.write, thread.tcache.ncached_max.read_sizeclass, arenas.hugepage et approximate_stats.active.

Source : opennet.ru

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster