Prikazani su rezultati testiranja najnovijih izdanja Redisa 8.0 i Valkey 8.1 DBMS-a, u kojima su deklarirane značajne optimizacije performansi. U svim provedenim testovima, fork koji je razvila zajednica nadmašio je originalni projekt, uglavnom zbog implementacije u Valkeyju novog mehanizma za višenitnu obradu ulazno/izlaznih podataka u asinkronom načinu rada, koji je u projekt prenio Amazon.
U testnom okruženju AWS Graviton4 c8g.2xlarge s 8 VCPU-ova, Valkey 8.1.1 postigao je propusnost od 999.8 tisuća SET zahtjeva u sekundi, dok je Redis 8.0 postigao razinu od 729.4 tisuća zahtjeva u sekundi. Sveukupno, Valkeyjeva propusnost bila je 37% veća od Redisove za SET operacije i 16% veća za GET. Istovremeno, u usporedbi s Redisom, Valkey je pokazao smanjenje SET-a za 30% i smanjenje GET latencije za 60%.

Zasebna analiza provedena je o promjeni propusnosti i kašnjenja ovisno o broju paralelnih procesora u višenitnom načinu obrade ulazno/izlaznih operacija. Do 3 niti, Valkey i Redis pokazuju približno jednake rezultate, ali tada Valkey preuzima vodstvo. Sa 6 niti na sustavu s 8 VCPU-ova, Valkeyjeva performansa bila je 678 tisuća SET zahtjeva u sekundi, a Redisova 563 tisuće zahtjeva u sekundi s ograničenjem od 256 istovremenih veza. Kada se broj veza povećao na 400, Valkeyjeva performansa porasla je na 832 tisuće SET zahtjeva u sekundi.

Nakon optimizacije rukovanja prekidima u sustavu kako bi se smanjio broj promjena konteksta u Valkeyju, uspjeli smo povećati performanse na 999.8 tisuća SET zahtjeva u sekundi. Bit optimizacije svodila se na dodjeljivanje 2 VCPU-a za rukovanje prekidima i vezanje preostalih 6 VCPU-a na 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 su rukovatelji uključeni (99 i 100) echo 1 | sudo tee /proc/irq/99/smp_affinity # veži rukovatelj 99 na jezgru 1 echo 2 | sudo tee /proc/irq/100/smp_affinity # vezanje rukovatelja 100 na jezgru 2 # Pokretanje DBMS-a (za Redis, promijenite valkey/valkey:8.1.1 u redis:8.0) s vezanjem kontejnera na 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
