Database Autonomy Service (DAS) intègre le ratio de fragmentation de la mémoire dans sa fonction d'inspection et de notation pour les instances Redis. Cette rubrique explique ce qu'est la fragmentation de la mémoire, ses causes, comment la mesurer et quand intervenir.
Fonctionnement de la fragmentation de la mémoire
La fragmentation de la mémoire survient lorsque la mémoire libre est divisée en petits segments non contigus. Même si la mémoire libre totale dépasse N octets, le système d'exploitation ne peut pas satisfaire une demande de bloc contigu de N octets : ces segments dispersés constituent des fragments de mémoire.
Dans Tair (compatible avec Redis OSS), les fragments de mémoire ne réduisent pas la mémoire disponible allouée à votre instance et n'entraînent pas de frais supplémentaires.
Par exemple, si une instance Tair (compatible avec Redis OSS) dispose d'une capacité de 1 Go dont 700 Mo sont utilisés, les 300 Mo restants (1 Go − 700 Mo) restent disponibles même si le ratio de fragmentation de la mémoire atteint 2, ce qui signifie que les données occupent physiquement 2 Go de mémoire système.
Causes de la fragmentation de la mémoire
La fragmentation de la mémoire a deux causes principales.
Comportement de l'allocateur de mémoire (interne)
Redis prend en charge plusieurs allocateurs de mémoire : libc, jemalloc et tcmalloc. Jemalloc est l'allocateur par défaut. Au lieu d'allouer exactement la quantité de mémoire demandée par l'application, jemalloc arrondit à la puissance de deux supérieure la plus proche : 8 octets, 16 octets, 32 octets, 2 Ko, 4 Ko, etc. L'écart entre la quantité demandée et la quantité allouée devient un fragment.
Renouvellement des paires clé-valeur (externe)
Lorsque des paires clé-valeur sont modifiées ou supprimées, la mémoire qu'elles occupaient est libérée ou redimensionnée. Comme les blocs alloués correspondent rarement exactement à la nouvelle taille des données, des lacunes s'accumulent au fil du temps.
Consulter le ratio de fragmentation de la mémoire
Exécutez la commande suivante dans DAS pour consulter les détails de l'utilisation de la mémoire :
INFO memory
Le résultat inclut les éléments suivants :
# Memory
used_memory:350458970752
used_memory_human:326.39G
used_memory_rss:349066919936
used_memory_rss_human:325.09G
…
mem_fragmentation_ratio:1.00
| Champ | Description |
|---|---|
used_memory |
Mémoire demandée par Redis pour stocker les données |
used_memory_rss |
Mémoire physique allouée à Redis par le système d'exploitation, y compris la surcharge liée aux fragments |
mem_fragmentation_ratio |
Ratio actuel de fragmentation de la mémoire |
Le ratio se calcule comme suit :
mem_fragmentation_ratio = used_memory_rss / used_memory
Interpréter le ratio
| Ratio | État | Action recommandée |
|---|---|---|
| 1,0–1,5 | Normal | Aucune action nécessaire |
| > 1,5 | Élevé | La mémoire fragmentée dépasse la moitié de la mémoire utilisée : investigatez et prenez des mesures correctives |