Порівняння продуктивності Redis Valkey 8.0 та 8.1

Опубліковані результати тестування нових версій СУБД Redis 8.0 та Valkey 8.1, які обіцяли значні оптимізації продуктивності. У всіх проведених тестах розроблюваний спільнотою форк Valkey перевершив оригінальний проект Redis, головним чином завдяки впровадженню нового механізму для багатопотокової обробки вводу/виводу в асинхронному режимі, який був переданий проекту компанією Amazon.

Вражаючі показники продуктивності Valkey

У тестовому середовищі AWS Graviton4 c8g.2xlarge з 8 VCPU Valkey 8.1.1 досяг продуктивності 999,8 тисяч SET-запитів за секунду. Натомість Redis 8.0 показав результат лише 729,4 тисяч запитів за секунду.

Загалом пропускна здатність Valkey виявилася вищою за Redis на 37% для операцій SET і на 16% для GET. Крім того, порівняно з Redis, проект Valkey продемонстрував зниження затримок при обробці запитів на 30% для операцій SET та на 60% для операцій GET.

Аналіз продуктивності при різній кількості потоків

Окремо проведено аналіз зміни пропускної здатності та затримок залежно від кількості паралельно виконуваних обробників у режимі багатопотокової обробки вводу/виводу.

До 3 потоків Valkey і Redis показують приблизно однакові результати, але потім уперед виривається Valkey. При 6 потоках на системі з 8 VCPU продуктивність Valkey склала 678 тисяч SET-запитів за секунду, а Redis — 563 тисячі запитів за секунду з лімітом у 256 одночасних з’єднань.

При збільшенні з’єднань до 400 продуктивність Valkey зросла до 832 тисяч SET-запитів за секунду. Такий прогрес демонструє переваги архітектури Valkey для обробки високого навантаження.

Оптимізація обробки переривань для максимальної продуктивності

Після оптимізації обробки переривань у системі для зменшення кількості перемикань контексту, в Valkey вдалося підняти продуктивність до вражаючих 999,8 тисяч SET-запитів за секунду.

Суть оптимізації полягала у виділенні 2 VCPU для обробки переривань і прив’язці 6 інших VCPU до потоків обробки вводу/виводу Valkey та Redis. Це дозволило виключити міграцію обробників між CPU, що значно покращило продуктивність.

Конфігурація для тестування продуктивності

Для тестування продуктивності використовувалася наступна конфігурація:

docker run --network="host" --rm --cpuset-cpus="2-7" \
valkey/valkey:8.0.1 valkey-benchmark \
-h 172.31.4.92 -p 6379 -t SET,GET -n 100000000 -c 256 \
-r 3000000 --threads 6 -d 1024

Отже, результати тестування чітко демонструють перевагу Valkey у всіх тестах продуктивності. Завдяки внеску від Amazon та активній розробці спільнотою, Valkey став серйозною альтернативою для тих, хто шукає високу продуктивність та низьку затримку в розподілених системах кешування даних.

Більше інформації про результати тестування можна знайти на офіційному сайті Valkey та у офіційному блозі.