Komparo de la rendimento de Valkey kaj Redis DBMS

Prezentiĝas la rezultoj de testado de la plej novaj eldonoj de Redis 8.0 kaj Valkey 8.1 DBMS, en kiuj oni deklaris signifajn optimumigojn pri rendimento. En ĉiuj testoj faritaj, la forko evoluigita de la komunumo superis la originalan projekton, ĉefe pro la efektivigo en Valkey de nova mekanismo por plurfadena enigo/eligo-prilaborado en nesinkrona reĝimo, transdonita al la projekto fare de Amazon.

En la testmedio AWS Graviton4 c8g.2xlarge kun 8 VCPU-oj, Valkey 8.1.1 atingis trairon de 999.8 mil SET-petoj po sekundo, dum Redis 8.0 atingis nivelon de 729.4 mil petoj po sekundo. Entute, la trairo de Valkey estis 37% pli alta ol tiu de Redis por SET-operacioj kaj 16% pli alta por GET. Samtempe, kompare kun Redis, Valkey montris 30%-an redukton en SET kaj 60%-an redukton en GET-latenteco.

 Komparo de la rendimento de Valkey kaj Redis DBMS

Aparta analizo estis farita pri la ŝanĝo en trairo kaj prokrastoj depende de la nombro de paralelaj procesoroj en la plurfadena I/O-prilabora reĝimo. Ĝis 3 fadenoj, Valkey kaj Redis montras proksimume egalajn rezultojn, sed poste Valkey prenas la antaŭecon. Kun 6 fadenoj sur sistemo kun 8 VCPU-oj, la rendimento de Valkey estis 678 mil SET-petoj po sekundo, kaj tiu de Redis estis 563 mil petoj po sekundo kun limo de 256 samtempaj konektoj. Kiam la nombro de konektoj pliiĝis al 400, la rendimento de Valkey pliiĝis al 832 mil SET-petoj po sekundo.

 Komparo de la rendimento de Valkey kaj Redis DBMS

Post optimumigo de interrompa pritraktado en la sistemo por redukti la nombron de kuntekstaj ŝanĝoj en Valkey, ni sukcesis pliigi la rendimenton al 999.8 mil SET-petoj po sekundo. La esenco de la optimumigo reduktiĝis al asigno de 2 VCPU-oj por interrompa pritraktado kaj ligado de la ceteraj 6 VCPU-oj al la Valkey kaj Redis I/O-prilaboraj fadenoj por forigi la migradon de traktiloj inter CPU-oj. sudo ethtool -L ens34 combined 2 # limigu la nombron de IRQ-traktiloj al 2 grep ens34 /proc/interrupts # vidu kiuj traktiloj estas implikitaj (99 kaj 100) echo 1 | sudo tee /proc/irq/99/smp_affinity # ligu traktilon 99 al kerno 1 echo 2 | sudo tee /proc/irq/100/smp_affinity # ligu traktilon 100 al kerno 2 # Komencu la DBMS-on (por Redis, ŝanĝu valkey/valkey:8.1.1 al redis:8.0) kun kontenera ligado al CPU-kernoj 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

Por testado de rendimento, la jena komando estis uzata: 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

fonto: opennet.ru

Aldoni komenton