A Valkey és a Redis adatbázis-kezelő rendszerek teljesítményének összehasonlítása

A Redis 8.0 és a Valkey 8.1 adatbázis-kezelő rendszerek legújabb kiadásainak tesztelésének eredményeit mutatjuk be, amelyekben jelentős teljesítményoptimalizálásokat állapítottunk meg. Az összes elvégzett tesztben a közösség által fejlesztett fork felülmúlta az eredeti projektet, főként a Valkey-ben megvalósított új, többszálú bemeneti/kimeneti feldolgozási mechanizmusnak köszönhetően, amelyet az Amazon vitt át a projektbe.

Az AWS Graviton4 c8g.2xlarge tesztkörnyezetben 8 VCPU-val a Valkey 8.1.1 másodpercenként 999.8 ezer SET kérés átviteli sebességet ért el, míg a Redis 8.0 másodpercenként 729.4 ezer kérés átviteli sebességet ért el. Összességében a Valkey átviteli sebessége 37%-kal magasabb volt a Redis átviteli sebességénél a SET műveletek esetében, és 16%-kal magasabb a GET műveletek esetében. Ugyanakkor a Redishez képest a Valkey 30%-os SET és 60%-os GET késleltetés-csökkenést mutatott.

 A Valkey és a Redis adatbázis-kezelő rendszerek teljesítményének összehasonlítása

Külön elemzést végeztek az átviteli sebesség és a késleltetések változásáról a párhuzamos processzorok számának függvényében többszálú I/O feldolgozási módban. 3 szálig a Valkey és a Redis megközelítőleg azonos eredményeket mutatnak, de ekkor a Valkey veszi át a vezetést. 6 szálon, egy 8 VCPU-val rendelkező rendszeren a Valkey teljesítménye másodpercenként 678 ezer SET kérés, a Redisé pedig 563 ezer kérés volt, 256 egyidejű kapcsolattal. Amikor a kapcsolatok száma 400-ra nőtt, a Valkey teljesítménye másodpercenként 832 ezer SET kérésre nőtt.

 A Valkey és a Redis adatbázis-kezelő rendszerek teljesítményének összehasonlítása

Miután optimalizáltuk a megszakításkezelést a rendszerben a Valkey kontextuskapcsolóinak számának csökkentése érdekében, sikerült a teljesítményt másodpercenként 999.8 ezer SET kérésre növelni. Az optimalizálás lényege 2 VCPU lefoglalása volt a megszakításkezeléshez, a fennmaradó 6 VCPU-nak a Valkey és a Redis I/O feldolgozó szálakhoz kötése, hogy kiküszöböljük a kezelők CPU-k közötti migrációját. sudo ethtool -L ens34 combined 2 # az IRQ kezelők számának 2-re korlátozása grep ens34 /proc/interrupts # az érintett kezelők megtekintése (99 és 100) echo 1 | sudo tee /proc/irq/99/smp_affinity # a 99-es kezelő kötése az 1-es maghoz echo 2 | sudo tee /proc/irq/100/smp_affinity # a 100-as kezelő kötése a 2-es maghoz # Az adatbázis-kezelő (DBMS) indítása (Redis esetén a valkey/valkey:8.1.1 értékét módosítsa redis:8.0-ra) a 2-7-es CPU-magokhoz való konténerkötéssel 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

A teljesítményteszteléshez a következő parancsot használtuk: 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

Forrás: opennet.ru

Hozzászólás