Представљени су резултати тестирања најновијих издања Redis 8.0 и Valkey 8.1 DBMS-а, у којима су декларисане значајне оптимизације перформанси. У свим спроведеним тестовима, 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 је показао смањење SET операција за 30% и смањење GET латенције за 60%.

Посебна анализа је спроведена о промени пропусног опсега и кашњења у зависности од броја паралелних процесора у режиму вишенитне И/О обраде. До 3 нити, Valkey и Redis показују приближно једнаке резултате, али онда Valkey преузима вођство. Са 6 нити на систему са 8 VCPU-ова, Valkey-јеве перформансе су биле 678 хиљада SET захтева у секунди, а Redis-ове 563 хиљаде захтева у секунди са ограничењем од 256 истовремених веза. Када се број веза повећао на 400, Valkey-јеве перформансе су се повећале на 832 хиљаде SET захтева у секунди.

Након оптимизације обраде прекида у систему како би се смањио број пребацивања контекста у Valkey-у, успели смо да повећамо перформансе на 999.8 хиљада SET захтева у секунди. Суштина оптимизације сводила се на додељивање 2 VCPU-а за обраду прекида и повезивање преосталих 6 VCPU-а са Valkey и Redis I/O нитима обраде како би се елиминисала миграција обрађивача између CPU-а. sudo ethtool -L ens34 combined 2 # ограничити број IRQ обрађивача на 2 grep ens34 /proc/interrupts # видети који обрађивачи су укључени (99 и 100) echo 1 | sudo tee /proc/irq/99/smp_affinity # повезати обрађивач 99 са core 1 echo 2 | sudo tee /proc/irq/100/smp_affinity # повезивање менаџера 100 са језгром 2 # Покрените DBMS (за 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
Извор: опеннет.ру
