Configuration et utilisation du cache d'unité d'exécution malloc

Le cache d'unité d'exécution malloc gère un pool par unité d'exécution de mémoire non allouée dans le but de réduire les conflits pour les structures de segment de mémoire global.

Ce cache tente de préallouer des éléments de mémoire pour une utilisation ultérieure en fonction du modèle d'allocations déjà effectué par l'unité d'exécution. Si une demande d'allocation peut être traitée à l'aide de l'un des éléments non alloués du cache d'unité d'exécution, elle est supprimée du cache et renvoyée à l'appelant. Si une demande d'allocation ne peut pas être traitée à l'aide d'un élément non alloué dans le cache, la demande est transmise à la structure de segment de mémoire globale.

Stratégie d'allocation de cache d'unité d'exécution|

La première fois qu'une unité d'exécution demande de la mémoire inférieure à 4096 octets, le cache des unités d'exécution préalloue plusieurs blocs de mémoire de même taille à partir de la structure de segment de mémoire globale. Il réserve également une plus grande partie de la mémoire à utiliser pour répondre aux demandes futures. Si l'unité d'exécution libère un élément de mémoire, cet élément sera conservé dans le cache de l'unité d'exécution pour les allocations futures. Toutefois, si, lors d'une libération, la taille du cache d'unité d'exécution dépasse un certain seuil, la moitié des éléments du cache est renvoyée à l'allocateur de sauvegarde. Essentiellement, le comportement du cache d'unité d'exécution peut être décrit comme un "processeur de traitement par lots", regroupant les appels d'allocation / désallocation individuels à exécuter en une seule fois. Cela conduit à moins de conflits sur les tas globaux et, dans de nombreux cas, à des gains d'efficacité.

Activation du cache d'unité d'exécution malloc

Malloc Thread Cache est activé par défaut pour l'allocateur Watson . Il peut être désactivé avant le démarrage du processus en définissant la variable d'environnement MALLOCOPTIONS comme suit:
$ MALLOCOPTIONS=threadcache:off
Le cache d'unité d'exécution Malloc n'est pas activé par défaut pour l'allocateur par défaut. Il peut être activé avant le démarrage du processus en définissant la variable d'environnement MALLOCOPTIONS comme suit.
$ MALLOCOPTIONS=threadcache