Prestatievergelijking van de databasesystemen Valkey en Redis

De resultaten van de tests van de nieuwste versies van de databasesystemen Redis 8.0 en Valkey 8.1 zijn gepresenteerd, waarin aanzienlijke prestatie-optimalisaties zijn aangekondigd. In alle uitgevoerde tests heeft de door de gemeenschap ontwikkelde fork het origineel overtroffen, voornamelijk dankzij de implementatie van een nieuw mechanisme voor multithreaded invoer/uitvoer verwerking in asynchrone modus, overgedragen aan het project door Amazon.

In de testomgeving AWS Graviton4 c8g.2xlarge met 8 VCPU wist Valkey 8.1.1 een prestatie van 999,8 duizend SET-verzoeken per seconde te bereiken, terwijl in Redis 8.0 een niveau van 729,4 duizend verzoeken per seconde werd gehaald. Over het algemeen was de doorvoer van Valkey 37% hoger dan die van Redis voor SET-operaties en 16% voor GET. Daarnaast toonde Valkey in vergelijking met Redis een verlaging van de latentie bij de verwerking van verzoeken met 30% voor SET-operaties en 60% voor GET-operaties.

Prestatievergelijking van de databasesystemen Valkey en Redis

Er is ook een analyse uitgevoerd van de verandering in doorvoer en latentie afhankelijk van het aantal gelijktijdige verwerkers in de modus voor multithreaded invoer/uitvoer. Tot 3 threads tonen Valkey en Redis ongeveer gelijke resultaten, maar daarna steekt Valkey er met kop en schouders bovenuit. Bij 6 threads op een systeem met 8 VCPU bedroeg de prestatie van Valkey 678 duizend SET-verzoeken per seconde, terwijl Redis 563 duizend verzoeken per seconde behaalde bij een limiet van 256 gelijktijdige verbindingen. Bij het verhogen van het aantal verbindingen tot 400 steeg de prestatie van Valkey naar 832 duizend SET-verzoeken per seconde.

Prestatievergelijking van de databasesystemen Valkey en Redis

Na optimalisatie van de interruptverwerking in het systeem om het aantal contextwisselingen te verminderen, slaagde Valkey erin de prestatie te verhogen tot 999,8 duizend SET-verzoeken per seconde. De kern van de optimalisatie was het toewijzen van 2 VCPU voor interruptverwerking en het koppelen van de resterende 6 VCPU aan de invoer/uitvoer verwerkingsthreads van Valkey en Redis, om migratie van verwerkers tussen CPU's te voorkomen. sudo ethtool -L ens34 combined 2 # beperken tot 2 aantal IRQ-verwerkers grep ens34 /proc/interrupts # kijk welke verwerkers zijn ingeschakeld (99 en 100) echo 1 | sudo tee /proc/irq/99/smp_affinity # koppel verwerker 99 aan core 1 echo 2 | sudo tee /proc/irq/100/smp_affinity # koppel verwerker 100 aan core 2 # Start de database (voor Redis, vervang valkey/valkey:8.1.1 door redis:8.0) met de container gekoppeld aan CPU cores 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

Voor de prestatie-test werd de volgende opdracht gebruikt: 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

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster