Сравнение на производителността на СУБД Valkey и Redis

Представени са резултатите от тестването на последните версии на СУБД Redis 8.0 и Valkey 8.1, в които са декларирани значителни оптимизации на производителността. Във всички проведени тестове, разработеният от общността fork превъзхожда оригиналния проект, главно поради имплементацията във Valkey на нов механизъм за многонишкова входно/изходна обработка в асинхронен режим, прехвърлен в проекта от Amazon.

В тестовата среда AWS Graviton4 c8g.2xlarge с 8 VCPU, Valkey 8.1.1 постигна пропускателна способност от 999.8 хиляди SET заявки в секунда, докато Redis 8.0 постигна ниво от 729.4 хиляди заявки в секунда. Като цяло, пропускателната способност на Valkey беше с 37% по-висока от тази на Redis за SET операции и с 16% по-висока за GET. В същото време, в сравнение с Redis, Valkey демонстрира 30% намаление на SET и 60% намаление на GET латентността.

 Сравнение на производителността на СУБД Valkey и Redis

Проведен е отделен анализ на промяната в пропускателната способност и закъсненията в зависимост от броя на паралелните процесори в режим на многонишкова I/O обработка. До 3 нишки, Valkey и Redis показват приблизително равни резултати, но след това Valkey поема водещата роля. С 6 нишки на система с 8 VCPU, производителността на Valkey е била 678 хиляди SET заявки в секунда, а на Redis - 563 хиляди заявки в секунда с ограничение от 256 едновременни връзки. Когато броят на връзките се е увеличил до 400, производителността на Valkey се е увеличила до 832 хиляди SET заявки в секунда.

 Сравнение на производителността на СУБД Valkey и Redis

След оптимизиране на обработката на прекъсвания в системата, за да се намали броят на превключванията на контекста във Valkey, успяхме да увеличим производителността до 999.8 хиляди SET заявки в секунда. Същността на оптимизацията се свеждаше до разпределяне на 2 VCPU за обработка на прекъсвания и обвързване на останалите 6 VCPU с нишките за обработка на I/O на Valkey и Redis, за да се елиминира миграцията на обработчици между процесорите. sudo ethtool -L ens34 combined 2 # ограничаване на броя на обработчиците на IRQ до 2 grep ens34 /proc/interrupts # вижте кои обработчици са включени (99 и 100) echo 1 | sudo tee /proc/irq/99/smp_affinity # обвързване на обработчик 99 с ядро ​​1 echo 2 | sudo tee /proc/irq/100/smp_affinity # обвързване на манипулатор 100 с ядро ​​2 # Стартиране на СУБД (за Redis, променете valkey/valkey:8.1.1 на redis:8.0) с обвързване на контейнер с ядра на процесора 2-7 docker run —network=»host» —rm \ —cpuset-cpus=»2-7″ valkey/valkey:8.1.1 \ —save «» —appendonly no —io-threads 6 \ —protected-mode no —maxmemory 10gb

За тестване на производителността беше използвана следната команда: 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

Източник: opennet.ru

Добавяне на нов коментар