Презентирани се резултатите од тестирањето на најновите изданија на Redis 8.0 и Valkey 8.1 DBMS, во кои беа декларирани значајни оптимизации на перформансите. Во сите спроведени тестови, форкот развиен од заедницата го надмина оригиналниот проект, главно поради имплементацијата во Valkey на нов механизам за обработка на повеќенишки влезно/излезни податоци во асинхрон режим, префрлен во проектот од Amazon.
Во AWS Graviton4 c8g.2xlarge тест-окружувањето со 8 VCPU-а, Valkey 8.1.1 постигна проток од 999.8 илјади SET барања во секунда, додека Redis 8.0 постигна ниво од 729.4 илјади барања во секунда. Генерално, протокот на Valkey беше 37% поголем од оној на Redis за SET операции и 16% поголем за GET. Во исто време, во споредба со Redis, Valkey покажа намалување од 30% во SET и 60% во GET латенцијата.

Беше спроведена посебна анализа на промената на пропусноста и доцнењата во зависност од бројот на паралелни процесори во режимот на обработка на I/O со повеќе нишки. До 3 нишки, Valkey и Redis покажуваат приближно еднакви резултати, но потоа Valkey го презема водството. Со 6 нишки на систем со 8 VCPU, перформансите на Valkey беа 678 илјади SET барања во секунда, а на Redis беа 563 илјади барања во секунда со ограничување од 256 истовремени конекции. Кога бројот на конекции се зголеми на 400, перформансите на Valkey се зголемија на 832 илјади SET барања во секунда.

Откако го оптимизиравме ракувањето со прекини во системот за да го намалиме бројот на контекстуални прекинувачи во Valkey, успеавме да ги зголемиме перформансите на 999.8 илјади SET барања во секунда. Суштината на оптимизацијата се сведе на доделување на 2 VCPU за ракување со прекини и поврзување на преостанатите 6 VCPU со нишките за обработка на Valkey и Redis I/O за да се елиминира миграцијата на обработувачи помеѓу процесорите. sudo ethtool -L ens34 combined 2 # ограничи го бројот на IRQ обработувачи на 2 grep ens34 /proc/interrupts # види кои обработувачи се вклучени (99 и 100) echo 1 | sudo tee /proc/irq/99/smp_affinity # врзи го обработувачот 99 со јадрото 1 echo 2 | sudo tee /proc/irq/100/smp_affinity # врзување на обработувачот 100 со јадро 2 # Стартување на DBMS (за Redis, промена на valkey/valkey:8.1.1 во redis:8.0) со поврзување на контејнерот со јадрата на процесорот 2-7 извршување на docker —network=»host» —rm \ —cpuset-cpus=»2-7″ valkey/valkey:8.1.1 \ —save «» —appendonly no —io-threads 6 \ —protected-mode no —maxmemory 10gb
За тестирање на перформансите, беше користена следната команда: 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
Извор: opennet.ru
