Voici ma question pour vous : Quel est l'impact de "mem_fragmentation_rateo" sur les performances de Redis ?
J'ai fait quelques recherches sur stackoverflow et sur redis.io, mais je n'ai pas vraiment trouvé d'explication claire à ma question.
Comme expliqué également dans cet eBook https://www.datadoghq.com/wp-content/uploads/2013/09/Understanding-the-Top-5-Redis-Performance-Metrics.pdf à la page 16, "La métrique mem_fragmentation_ratio donne le rapport entre la mémoire utilisée telle que vue par le système d'exploitation (used_memory_rss) et la mémoire allouée par Redis (used_memory)".
Ainsi, comme expliqué dans http://redis.io/commands/INFO , "Idéalement, la valeur de used_memory_rss ne devrait être que légèrement supérieure à celle de used_memory. Lorsque rss >> used, une grande différence signifie qu'il y a fragmentation de la mémoire (interne ou externe), ce qui peut être évalué en vérifiant mem_fragmentation_ratio. Lorsque utilisé >> rss, cela signifie qu'une partie de la mémoire de Redis a été échangée par le système d'exploitation : attendez-vous à des latences significatives".
Ainsi, lorsque la valeur de "used_memory" est supérieure à celle de "used_memory_rss", l'impact négatif sur le nœud Redis est clair, car cela signifie que Redis a commencé à utiliser Swap, ce qui n'est pas bon pour les performances.
Mais, qu'en est-il d'une situation où nous avons un "used_memory_rss" supérieur à "used_memory" ? Cela devrait probablement signifier que notre allocateur de mémoire n'a pas "repris" une partie de la mémoire qui a été assignée à Redis dans le passé, et que Redis n'utilise plus (peut-être en raison d'un pic temporaire). Cependant, je n'arrive pas à comprendre comment cela peut avoir un impact négatif sur les performances de Redis. Pourquoi est-ce que je lis de nombreux posts sur internet où les gens sont si préoccupés par un "mem_fragmentation_ratio" élevé ? De plus, dans l'eBook que j'ai mentionné précédemment, ils suggèrent d'avoir un "mem_fragmentation_rateo" entre 1 et 1,5.
Dans cette situation, lorsque nous avons un "used_memory_rss" plus élevé, Redis est-il vraiment affecté ? Devons-nous nous attendre à une dégradation des performances de Redis avec un "mem_fragmentation_ratio" élevé ?
J'ai décidé de vous poser cette question parce que je pense honnêtement qu'avec un "mem_fragmentation_ratio" élevé, on peut avoir un problème "seulement" dans l'OS, qui "peut" souffrir d'un manque de mémoire : l'OS ne peut pas allouer de la nouvelle mémoire aux nouveaux processus. Quoi qu'il en soit, cela ne devrait pas affecter directement Redis (à moins que le système d'exploitation ne commence à ralentir, etc.)
Pouvez-vous s'il vous plaît clarifier mes doutes ? Avez-vous eu une expérience où vous avez connu un "mem_fragmentation_ratio" élevé, et vous avez commencé à remarquer une dégradation de la performance de Redis ?
Merci.