Vergelyking van Valkey en Redis DBMS-prestasie

Die resultate van die toetsing van die nuutste vrystellings van Redis 8.0 en Valkey 8.1 DBMS word aangebied, waarin beduidende prestasie-optimaliserings verklaar is. In alle toetse wat uitgevoer is, het die vurk wat deur die gemeenskap ontwikkel is, die oorspronklike projek oortref, hoofsaaklik as gevolg van die implementering in Valkey van 'n nuwe meganisme vir multi-threaded invoer/uitvoerverwerking in asynchrone modus, wat deur Amazon na die projek oorgedra is.

In die AWS Graviton4 c8g.2xlarge-toetsomgewing met 8 VCPU's het Valkey 8.1.1 'n deurset van 999.8 duisend SET-versoeke per sekonde behaal, terwyl Redis 8.0 'n vlak van 729.4 duisend versoeke per sekonde behaal het. Oor die algemeen was Valkey se deurset 37% hoër as Redis s'n vir SET-bewerkings en 16% hoër vir GET. Terselfdertyd, in vergelyking met Redis, het Valkey 'n 30%-vermindering in SET- en 60%-vermindering in GET-latensie getoon.

 Vergelyking van Valkey en Redis DBMS-prestasie

'n Afsonderlike analise is uitgevoer van die verandering in deurset en vertragings afhangende van die aantal parallelle verwerkers in die multi-threaded I/O-verwerkingsmodus. Tot 3 drade toon Valkey en Redis ongeveer gelyke resultate, maar dan neem Valkey die voortou. Met 6 drade op 'n stelsel met 8 VCPU's was Valkey se werkverrigting 678 duisend SET-versoeke per sekonde, en Redis s'n was 563 duisend versoeke per sekonde met 'n limiet van 256 gelyktydige verbindings. Toe die aantal verbindings tot 400 toegeneem het, het Valkey se werkverrigting tot 832 duisend SET-versoeke per sekonde toegeneem.

 Vergelyking van Valkey en Redis DBMS-prestasie

Nadat ons die onderbrekingshantering in die stelsel geoptimaliseer het om die aantal konteksskakelaars in Valkey te verminder, het ons daarin geslaag om die werkverrigting tot 999.8 duisend SET-versoeke per sekonde te verhoog. Die kern van die optimalisering het neergekom op die toewysing van 2 VCPU's vir onderbrekingshantering en die binding van die oorblywende 6 VCPU's aan die Valkey- en Redis I/O-verwerkingsdrade om die migrasie van hanteerders tussen SVE's uit te skakel. sudo ethtool -L ens34 combined 2 # beperk die aantal IRQ-hanteerders tot 2 grep ens34 /proc/interrupts # sien watter hanteerders betrokke is (99 en 100) echo 1 | sudo tee /proc/irq/99/smp_affinity # bind hanteerder 99 aan kern 1 echo 2 | sudo tee /proc/irq/100/smp_affinity # bind hanteerder 100 aan kern 2 # Begin die DBMS (vir Redis, verander valkey/valkey:8.1.1 na redis:8.0) met houerbinding aan SVE-kerne 2-7 docker run —network=»host» —rm \ —cpuset-cpus=»2-7″ valkey/valkey:8.1.1 \ —save «» —appendonly nee —io-threads 6 \ —protected-mode nee —maxmemory 10gb

Vir prestasietoetsing is die volgende opdrag gebruik: 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

Bron: opennet.ru

Voeg 'n opmerking