Es presenten els resultats de les proves de les darreres versions dels SGBD Redis 8.0 i Valkey 8.1, en les quals es van declarar optimitzacions de rendiment significatives. En totes les proves realitzades, el fork desenvolupat per la comunitat va superar el projecte original, principalment a causa de la implementació a Valkey d'un nou mecanisme per al processament d'entrada/sortida multifil en mode asíncron, transferit al projecte per Amazon.
En l'entorn de prova AWS Graviton4 c8g.2xlarge amb 8 VCPU, Valkey 8.1.1 va aconseguir un rendiment de 999.8 sol·licituds SET per segon, mentre que Redis 8.0 va aconseguir un nivell de 729.4 sol·licituds per segon. En general, el rendiment de Valkey va ser un 37% superior al de Redis per a les operacions SET i un 16% superior per a GET. Al mateix temps, en comparació amb Redis, Valkey va demostrar una reducció del 30% en la latència SET i del 60% en la latència GET.

Es va dur a terme una anàlisi separada del canvi en el rendiment i els retards en funció del nombre de processadors paral·lels en el mode de processament d'E/S multifil. Fins a 3 fils, Valkey i Redis mostren resultats aproximadament iguals, però llavors Valkey pren la iniciativa. Amb 6 fils en un sistema amb 8 VCPU, el rendiment de Valkey va ser de 678 mil sol·licituds SET per segon, i el de Redis va ser de 563 mil sol·licituds per segon amb un límit de 256 connexions simultànies. Quan el nombre de connexions va augmentar a 400, el rendiment de Valkey va augmentar a 832 mil sol·licituds SET per segon.

Després d'optimitzar la gestió d'interrupcions al sistema per reduir el nombre de canvis de context a Valkey, vam aconseguir augmentar el rendiment a 999.8 sol·licituds SET per segon. L'essència de l'optimització es va reduir a assignar 2 VCPU per a la gestió d'interrupcions i vincular les 6 VCPU restants als fils de processament d'E/S de Valkey i Redis per eliminar la migració de controladors entre CPU. sudo ethtool -L ens34 combined 2 # limita el nombre de controladors d'IRQ a 2 grep ens34 /proc/interrupts # veu quins controladors estan implicats (99 i 100) echo 1 | sudo tee /proc/irq/99/smp_affinity # vincula el controlador 99 al nucli 1 echo 2 | sudo tee /proc/irq/100/smp_affinity # bind handler 100 to core 2 # Inicia el DBMS (per a Redis, canvia valkey/valkey:8.1.1 a redis:8.0) amb la vinculació de contenidors als nuclis de CPU 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
Per a les proves de rendiment, s'ha utilitzat l'ordre següent: 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
Font: opennet.ru
