Resultaten frÄn tester av de senaste versionerna av databashanterare Redis 8.0 och Valkey 8.1 har presenterats, dÀr betydande prestandaförbÀttringar har annonserats. I alla genomförda tester övertrÀffade det community-ledda forken det originella projektet, frÀmst tack vare införandet av en ny mekanism för multitrÄdad in- och utdatahantering i asynkront lÀge, överfört till projektet av Amazon.
I testmiljön AWS Graviton4 c8g.2xlarge med 8 VCPU uppnÄddes en prestanda pÄ 999,8 tusen SET-förfrÄgningar per sekund i Valkey 8.1.1, medan Redis 8.0 nÄdde ett vÀrde av 729,4 tusen förfrÄgningar per sekund. I allmÀnhet var Valkeys bandbredd högre Àn Redis med 37 % för SET-operationer och 16 % för GET-operationer. Samtidigt visade Valkey, jÀmfört med Redis, en minskning av fördröjningar vid hantering av förfrÄgningar med 30 % för SET-operationer och 60 % för GET-operationer.

En separat analys av förÀndringen av bandbredd och fördröjningar beroende av antalet samtidigt körande hanterare i lÀget för multitrÄdad in- och utdatahantering genomfördes. Upp till 3 trÄdar visar Valkey och Redis ungefÀr samma resultat, men sedan drar Valkey ifrÄn. Vid 6 trÄdar pÄ ett system med 8 VCPU uppnÄdde Valkey en prestanda pÄ 678 tusen SET-förfrÄgningar per sekund, medan Redis nÄdde 563 tusen förfrÄgningar per sekund med en grÀns pÄ 256 samtidiga anslutningar. NÀr anslutningarna ökades till 400 vÀxte Valkeys prestanda till 832 tusen SET-förfrÄgningar per sekund.

Efter optimering av avbrottshanteringen i systemet för att minska antalet kontextbyten har Valkey lyckats höja prestandan till 999,8 tusen SET-förfrĂ„gningar per sekund. Optimeringens kĂ€rna handlade om att tilldela 2 VCPU för avbrottshantering och binda de kvarstĂ„ende 6 VCPU till Valkey- och Redis-in- och utdatahantering för att utesluta flyttning av hanterare mellan CPU:erna. sudo ethtool -L ens34 combined 2 # begrĂ€nsar antalet IRQ-hanterare till 2 grep ens34 /proc/interrupts # kolla vilka hanterare som anvĂ€nds (99 och 100) echo 1 | sudo tee /proc/irq/99/smp_affinity # binda hanterare 99 till kĂ€rna 1 echo 2 | sudo tee /proc/irq/100/smp_affinity # binda hanterare 100 till kĂ€rna 2 # Starta databashanteraren (för Redis, Ă€ndra valkey/valkey:8.1.1 till redis:8.0) med containerbindning till CPU-kĂ€rnorna 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 att testa prestandan anvĂ€ndes kommandot: 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
KĂ€lla: opennet.ru
