Vergleich der Leistungsfähigkeit von Valkey und Redis

Präsentiert werden die Testergebnisse der aktuellen Versionen der Datenbanksysteme Redis 8.0 und Valkey 8.1, in denen signifikante Leistungsoptimierungen verkündet wurden. In allen durchgeführten Tests übertraf der von der Community entwickelte Fork das Originalprojekt, hauptsächlich dank der Implementierung eines neuen Mechanismus für die mehrfädige asynchrone E/A-Verarbeitung, der von Amazon zur Verfügung gestellt wurde.

In der Testumgebung AWS Graviton4 c8g.2xlarge mit 8 VCPU erreichte Valkey 8.1.1 eine Leistung von 999,8 Tausend SET-Anfragen pro Sekunde, während Redis 8.0 einen Wert von 729,4 Tausend Anfragen pro Sekunde erzielte. Insgesamt war die Durchsatzrate von Valkey um 37 % höher als die von Redis für SET-Operationen und um 16 % für GET-Operationen. Zudem zeigte das Projekt Valkey im Vergleich zu Redis eine Verringerung der Latenzzeiten bei der Verarbeitung von Anfragen um 30 % für SET-Operationen und um 60 % für GET-Operationen.

Vergleich der Leistungsfähigkeit von Valkey und Redis

Separat wurde eine Analyse der Änderung von Durchsatz und Latenz in Abhängigkeit von der Anzahl der parallel ausgeführten Handler im Modus der mehrfädigen Eingabe/Ausgabe-Behandlung durchgeführt. Bis zu 3 Threads zeigen Valkey und Redis ungefähr gleiche Ergebnisse, doch dann setzt sich Valkey durch. Bei 6 Threads auf einem System mit 8 VCPU betrug die Leistung von Valkey 678.000 SET-Anfragen pro Sekunde, während Redis 563.000 Anfragen pro Sekunde bei einer Grenze von 256 gleichzeitigen Verbindungen erreichte. Bei einer Erhöhung der Verbindungen auf 400 stieg die Leistung von Valkey auf 832.000 SET-Anfragen pro Sekunde.

Vergleich der Leistungsfähigkeit von Valkey und Redis

Durch die Optimierung der Interrupt-Verarbeitung im System, um die Anzahl der Kontextwechsel zu reduzieren, konnte Valkey die Leistung auf 999,8 Tausend SET-Anfragen pro Sekunde steigern. Die Optimierung bestand darin, 2 VCPUs für die Interrupt-Verarbeitung zu reservieren und die verbleibenden 6 VCPUs den Verarbeitungsströmen von Valkey und Redis zuzuordnen, um Migrationen der Handler zwischen den CPUs zu vermeiden. sudo ethtool -L ens34 combined 2 # beschränken wir die Anzahl der IRQ-Handler auf 2 grep ens34 /proc/interrupts # prüfen, welche Handler aktiv sind (99 und 100) echo 1 | sudo tee /proc/irq/99/smp_affinity # binden wir Handler 99 an Kern 1 echo 2 | sudo tee /proc/irq/100/smp_affinity # binden wir Handler 100 an Kern 2 # Starten Sie die Datenbank (für Redis ändern Sie valkey/valkey:8.1.1 in redis:8.0) mit einer Bindung des Containers an die CPU-Kerne 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

Für die Leistungstests wurde der Befehl verwendet: 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

Quelle: opennet.ru

Erwerben Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster