2016-07-17 3 views
5

Вот мой вопрос для вас: Как «mem_fragmentation_rateo» влияет на производительность в Redis?Redis: Как «mem_fragmentation_ratio» влияет на производительность?

Я провел некоторое расследование в stackoverflow и redis.io, но я не мог найти ясного объяснения по поводу моего вопроса.

Как также объясняется в этой электронной книге https://www.datadoghq.com/wp-content/uploads/2013/09/Understanding-the-Top-5-Redis-Performance-Metrics.pdf на странице # 16, «Метрика mem_fragmentation_ratio дает отношение памяти, используемой как видимое операционной системой (used_memory_rss) к памяти, выделенной Redis (used_memory)».

Таким образом, как объяснено в http://redis.io/commands/INFO, «в идеале значение used_memory_rss должно быть немного выше, чем used_memory. При использовании rss >> большая разница означает фрагментацию памяти (внутреннюю или внешнюю), которая может быть оценена с помощью проверяя mem_fragmentation_ratio. Когда используется >> rss, это означает, что часть памяти Redis была отключена операционной системой: ожидайте некоторые значительные задержки ».

Итак, когда у нас есть более высокая «used_memory», чем «used_memory_rss», отрицательное влияние на узел Redis ясное, потому что это означает, что Redis начал использовать Swap, и это явно не подходит для производительности.

Но как насчет ситуации, когда у нас есть более высокая «used_memory_rss», чем «used_memory»? Вероятно, это должно означать, что наш распределитель памяти не «забрал» часть памяти, назначенной Redis в прошлом, и что Redis больше не использует (возможно, из-за временного всплеска). Однако я не могу понять, как это может негативно повлиять на производительность Redis. Почему я читаю много сообщений в Интернете, где люди так обеспокоены высоким «mem_fragmentation_ratio»? Также в книге, о которой я упоминал ранее, они предлагают иметь «mem_fragmentation_rateo» между 1 и 1.5.

В этой ситуации, когда у нас есть более высокий «used_memory_rss», действительно ли Redis затронут? Должны ли мы ожидать ухудшения производительности Redis с высоким «mem_fragmentation_ratio»?

Я решил задать вам этот вопрос, потому что я честно считаю, что с высоким «mem_fragmentation_ratio» у нас может быть проблема «только» в ОС, которая «может» страдать от нехватки памяти: ОС может Не выделяйте новую память для новых процессов. В любом случае, он не должен напрямую влиять на Redis (если ОС не начнет замедляться и т. Д.).

Не могли бы вы прояснить мои сомнения? Был ли у вас опыт работы с высоким «mem_fragmentation_ratio», и вы начали замечать ухудшение производительности Redis?

Спасибо

ответ

0

Я не гуру Redis, но из моего опыта и документации, которую я прочитал, fragmentation_ratio не влияет на производительность напрямую. Но это увеличивает потребление памяти. Когда ваше приложение добавляет новые данные и данные не заполняют свободные фрагменты в памяти (когда пучки новых данных больше этих фрагментов), эта память остается свободной. И таким образом вы можете исчерпать память быстрее, чем вы ожидаете.

 Смежные вопросы

  • Нет связанных вопросов^_^