Porovnanie výkonu DBMS Valkey a Redis

Sú prezentované výsledky testovania najnovších vydaní DBMS Redis 8.0 a Valkey 8.1, v ktorých boli deklarované významné optimalizácie výkonu. Vo všetkých vykonaných testoch fork vyvinutý komunitou prekonal pôvodný projekt, najmä vďaka implementácii nového mechanizmu pre viacvláknové spracovanie vstupu/výstupu v asynchrónnom režime vo Valkey, ktorý do projektu preniesla spoločnosť Amazon.

V testovacom prostredí AWS Graviton4 c8g.2xlarge s 8 VCPU dosiahol Valkey 8.1.1 priepustnosť 999.8 tisíc požiadaviek SET za sekundu, zatiaľ čo Redis 8.0 dosiahol úroveň 729.4 tisíc požiadaviek za sekundu. Celkovo bola priepustnosť Valkey o 37 % vyššia ako priepustnosť Redisu pre operácie SET a o 16 % vyššia pre operácie GET. Zároveň v porovnaní s Redisom Valkey preukázal 30 % zníženie latencie SET a 60 % zníženie latencie GET.

 Porovnanie výkonu DBMS Valkey a Redis

Samostatná analýza sa vykonala zameraná na zmenu priepustnosti a oneskorení v závislosti od počtu paralelných procesorov v režime viacvláknového spracovania I/O. Do 3 vlákien vykazujú Valkey a Redis približne rovnaké výsledky, ale potom sa Valkey ujíma vedenia. So 6 vláknami na systéme s 8 VCPU bol výkon Valkey 678-tisíc požiadaviek SET za sekundu a Redis 563-tisíc požiadaviek za sekundu s limitom 256 simultánnych pripojení. Keď sa počet pripojení zvýšil na 400, výkon Valkey sa zvýšil na 832-tisíc požiadaviek SET za sekundu.

 Porovnanie výkonu DBMS Valkey a Redis

Po optimalizácii spracovania prerušení v systéme s cieľom znížiť počet prepínaní kontextu vo Valkey sa nám podarilo zvýšiť výkon na 999.8 tisíca požiadaviek SET za sekundu. Podstata optimalizácie spočívala v alokácii 2 VCPU na spracovanie prerušení a naviazaní zvyšných 6 VCPU na vlákna spracovania I/O Valkey a Redis, aby sa eliminovala migrácia obslužných programov medzi CPU. sudo ethtool -L ens34 combined 2 # obmedzenie počtu obslužných programov IRQ na 2 grep ens34 /proc/interrupts # zobrazenie, ktoré obslužné programy sú zapojené (99 a 100) echo 1 | sudo tee /proc/irq/99/smp_affinity # naviazanie obslužného programu 99 na jadro 1 echo 2 | sudo tee /proc/irq/100/smp_affinity # naviazanie obslužného programu 100 na jadro 2 # Spustenie DBMS (pre Redis zmeňte valkey/valkey:8.1.1 na redis:8.0) s naviazaním kontajnera na jadrá CPU 2-7 docker run —network=»host» —rm \ —cpuset-cpus=»2-7″ valkey/valkey:8.1.1 \ —save «» —appendonly nie —io-threads 6 \ —protected-mode nie —maxmemory 10gb

Na testovanie výkonu bol použitý nasledujúci príkaz: 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

Zdroj: opennet.ru

Pridať komentár