Казалось бы, явно должно свапиться? Но 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. Возможно, стоит добавить в статью.
Под капотом Redis: Строки