Poređenje performansi Valkey i Redis DBMS-a

Predstavljeni su rezultati testiranja najnovijih izdanja Redis 8.0 i Valkey 8.1 DBMS-a, u kojima su deklarisane značajne optimizacije performansi. U svim provedenim testovima, fork koji je razvila zajednica nadmašio je originalni projekat, uglavnom zbog implementacije u Valkeyu novog mehanizma za višenitnu obradu ulaza/izlaza u asinhronom režimu, koji je u projekat prenio Amazon.

U testnom okruženju AWS Graviton4 c8g.2xlarge sa 8 VCPU-ova, Valkey 8.1.1 je postigao propusnost od 999.8 hiljada SET zahtjeva u sekundi, dok je Redis 8.0 postigao nivo od 729.4 hiljade zahtjeva u sekundi. Sveukupno, Valkeyjev protok je bio 37% veći od Redisa za SET operacije i 16% veći za GET. Istovremeno, u poređenju sa Redisom, Valkey je pokazao smanjenje SET operacija za 30% i smanjenje GET latencije za 60%.

 Poređenje performansi Valkey i Redis DBMS-a

Odvojena analiza je provedena o promjeni propusnosti i kašnjenjima u zavisnosti od broja paralelnih procesora u višenitnom režimu obrade ulazno/izlaznih operacija. Do 3 niti, Valkey i Redis pokazuju približno jednake rezultate, ali tada Valkey preuzima vodstvo. Sa 6 niti na sistemu sa 8 VCPU-ova, Valkeyjeve performanse su bile 678 hiljada SET zahtjeva u sekundi, a Redisove 563 hiljade zahtjeva u sekundi sa ograničenjem od 256 istovremenih konekcija. Kada se broj konekcija povećao na 400, Valkeyjeve performanse su se povećale na 832 hiljade SET zahtjeva u sekundi.

 Poređenje performansi Valkey i Redis DBMS-a

Nakon optimizacije rukovanja prekidima u sistemu kako bi se smanjio broj promjena konteksta u Valkeyju, uspjeli smo povećati performanse na 999.8 hiljada SET zahtjeva u sekundi. Suština optimizacije svodila se na dodjeljivanje 2 VCPU-a za rukovanje prekidima i vezivanje preostalih 6 VCPU-a za Valkey i Redis I/O niti za obradu kako bi se eliminirala migracija rukovatelja između CPU-a. sudo ethtool -L ens34 combined 2 # ograniči broj rukovatelja IRQ-a na 2 grep ens34 /proc/interrupts # pogledaj koji rukovatelji su uključeni (99 i 100) echo 1 | sudo tee /proc/irq/99/smp_affinity # veži rukovatelj 99 za core 1 echo 2 | sudo tee /proc/irq/100/smp_affinity # vezanje rukovatelja 100 za jezgro 2 # Pokretanje DBMS-a (za Redis, promijenite valkey/valkey:8.1.1 u redis:8.0) s vezanjem kontejnera za jezgre CPU-a 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

Za testiranje performansi korištena je sljedeća naredba: 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

izvor: opennet.ru

Dodajte komentar