Комментарии 3
Предельно годная статья. Побольше бы таких на хабре
Про jemalloc есть
интересная заметка в Facebook Engineering
Про jemalloc есть
интересная заметка в Facebook Engineering
+6
>А значения меньше 1 говорит о том, что память кончилась и операционная система свапится.
Вероятно, всё не так однозначно. Например, это может говорить о том, что системе _ранее_ не хватало памяти и она свапилась?
Посмотрел один из свох боевых редисок:
# Memory
used_memory:56794944
used_memory_human:54.16M
used_memory_rss:36392960
used_memory_peak:120547320
used_memory_peak_human:114.96M
used_memory_lua:31744
mem_fragmentation_ratio:0.64
mem_allocator:jemalloc-3.2.0
Казалось бы, явно должно свапиться? Но vmstat за полчаса не показал ни одного намека на чтение или запись в свап. При этом работа кипит. Хотя в «Understanding the Top 5 Redis Performance Metrics» пишут то же. Что-то тут не однозначно…
Вероятно, всё не так однозначно. Например, это может говорить о том, что системе _ранее_ не хватало памяти и она свапилась?
Посмотрел один из свох боевых редисок:
# Memory
used_memory:56794944
used_memory_human:54.16M
used_memory_rss:36392960
used_memory_peak:120547320
used_memory_peak_human:114.96M
used_memory_lua:31744
mem_fragmentation_ratio:0.64
mem_allocator:jemalloc-3.2.0
Казалось бы, явно должно свапиться? Но vmstat за полчаса не показал ни одного намека на чтение или запись в свап. При этом работа кипит. Хотя в «Understanding the Top 5 Redis Performance Metrics» пишут то же. Что-то тут не однозначно…
+3
Отвечу сам себе =)
Я верно предположил — редису когда-то ранее не хватало памяти и часть выгрузилась в свап. Позже свободная память в ОС появилась, но к выгруженным в свап ключам не было обращений и они продолжали лежать там.
При этом не наблюдается проблем с производительностью — для новых ключей памяти достаточно, никаких проблем. Хотя в info имеем
mem_fragmentation_ratio:0.64
Теперь берем redis-cli и пробегаемся по всем данным (у меня это несколько больших set-ов). Во время чтения параллельно запущенный vmstat действительно показал чтения из свапа. После экзекуции имеем:
mem_fragmentation_ratio:1.09
Т.е всё чисто-красиво.
Это я к тому, что не стоит сразу пугаться цифр mem_fragmentation_ratio. Возможно, стоит добавить в статью.
Я верно предположил — редису когда-то ранее не хватало памяти и часть выгрузилась в свап. Позже свободная память в ОС появилась, но к выгруженным в свап ключам не было обращений и они продолжали лежать там.
При этом не наблюдается проблем с производительностью — для новых ключей памяти достаточно, никаких проблем. Хотя в info имеем
mem_fragmentation_ratio:0.64
Теперь берем redis-cli и пробегаемся по всем данным (у меня это несколько больших set-ов). Во время чтения параллельно запущенный vmstat действительно показал чтения из свапа. После экзекуции имеем:
mem_fragmentation_ratio:1.09
Т.е всё чисто-красиво.
Это я к тому, что не стоит сразу пугаться цифр mem_fragmentation_ratio. Возможно, стоит добавить в статью.
+3
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Под капотом Redis: Строки