Pull to refresh

Comments 3

>А значения меньше 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» пишут то же. Что-то тут не однозначно…
Отвечу сам себе =)
Я верно предположил — редису когда-то ранее не хватало памяти и часть выгрузилась в свап. Позже свободная память в ОС появилась, но к выгруженным в свап ключам не было обращений и они продолжали лежать там.
При этом не наблюдается проблем с производительностью — для новых ключей памяти достаточно, никаких проблем. Хотя в info имеем
mem_fragmentation_ratio:0.64

Теперь берем redis-cli и пробегаемся по всем данным (у меня это несколько больших set-ов). Во время чтения параллельно запущенный vmstat действительно показал чтения из свапа. После экзекуции имеем:

mem_fragmentation_ratio:1.09

Т.е всё чисто-красиво.
Это я к тому, что не стоит сразу пугаться цифр mem_fragmentation_ratio. Возможно, стоит добавить в статью.
Sign up to leave a comment.

Articles

Change theme settings