Predstavljeni so rezultati testiranja najnovejših izdaj sistemov za upravljanje podatkovnih baz Redis 8.0 in Valkey 8.1, v katerih so bile deklarirane pomembne optimizacije zmogljivosti. V vseh izvedenih testih je fork, ki ga je razvila skupnost, presegel prvotni projekt, predvsem zaradi implementacije novega mehanizma za večnitno vhodno/izhodno obdelavo v asinhronem načinu v Valkeyju, ki ga je v projekt prenesel Amazon.
V testnem okolju AWS Graviton4 c8g.2xlarge z 8 VCPU-ji je Valkey 8.1.1 dosegel prepustnost 999.8 tisoč zahtev SET na sekundo, Redis 8.0 pa 729.4 tisoč zahtev na sekundo. Skupna prepustnost Valkeyja je bila za SET operacije za 37 % višja od Redisa, za GET pa za 16 % višja. Hkrati je Valkey v primerjavi z Redisom pokazal 30-odstotno zmanjšanje SET in 60-odstotno zmanjšanje zakasnitve GET.

Ločena analiza je bila izvedena glede na spremembo pretočnosti in zamud glede na število vzporednih procesorjev v večnitnem načinu obdelave V/I. Do 3 niti Valkey in Redis kažeta približno enake rezultate, nato pa Valkey prevzame vodstvo. S 6 nitmi na sistemu z 8 VCPU-ji je bila Valkeyjeva zmogljivost 678 tisoč zahtev SET na sekundo, Redisova pa 563 tisoč zahtev na sekundo z omejitvijo 256 hkratnih povezav. Ko se je število povezav povečalo na 400, se je Valkeyjeva zmogljivost povečala na 832 tisoč zahtev SET na sekundo.

Po optimizaciji obravnave prekinitev v sistemu za zmanjšanje števila preklopov konteksta v Valkeyju nam je uspelo povečati zmogljivost na 999.8 tisoč zahtev SET na sekundo. Bistvo optimizacije se je skrčilo na dodelitev 2 VCPU-jev za obravnavo prekinitev in vezavo preostalih 6 VCPU-jev na niti za obdelavo V/I Valkeyja in Redisa, da se odpravi migracija obdelovalcev med procesorji. sudo ethtool -L ens34 combined 2 # omejitev števila obdelovalcev IRQ na 2 grep ens34 /proc/interrupts # ogled vključenih obdelovalcev (99 in 100) echo 1 | sudo tee /proc/irq/99/smp_affinity # vezava obdelovalca 99 na jedro 1 echo 2 | sudo tee /proc/irq/100/smp_affinity # vezava rutine 100 na jedro 2 # Zaženite DBMS (za Redis spremenite valkey/valkey:8.1.1 v redis:8.0) z vezavo vsebnika na jedra procesorja 2-7 docker run —network=»host» —rm \ —cpuset-cpus=»2-7″ valkey/valkey:8.1.1 \ —save «» —appendonly ne —io-threads 6 \ —protected-mode ne —maxmemory 10gb
Za testiranje zmogljivosti je bil uporabljen naslednji ukaz: 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
Vir: opennet.ru
