Esitletakse Redis 8.0 ja Valkey 8.1 andmebaasisüsteemide uusimate versioonide testimise tulemusi, milles deklareeriti olulisi jõudluse optimeerimisi. Kõigis läbiviidud testides edestas kogukonna väljatöötatud fork algset projekti, peamiselt tänu Valkey uue mitmekeermelise sisend-/väljundtöötlusmehhanismi rakendamisele asünkroonses režiimis, mille Amazon projektile üle kandis.
AWS Graviton4 c8g.2xlarge testikeskkonnas 8 VCPU-ga saavutas Valkey 8.1.1 läbilaskevõime 999.8 tuhat SET-päringut sekundis, samas kui Redis 8.0 saavutas taseme 729.4 tuhat päringut sekundis. Üldiselt oli Valkey läbilaskevõime SET-operatsioonide puhul 37% ja GET-operatsioonide puhul 16% suurem kui Redisil. Samal ajal näitas Valkey Redisega võrreldes SET-latentsuse vähenemist 30% ja GET-latentsuse vähenemist 60%.

Mitmekeermelise I/O töötlusrežiimi paralleelprotsessorite arvust sõltuvate läbilaskevõime ja viivituste muutuste kohta viidi läbi eraldi analüüs. Kuni 3 keerme puhul näitavad Valkey ja Redis ligikaudu võrdseid tulemusi, kuid siis haarab Valkey juhtpositsiooni. 6 keermega süsteemis, millel on 8 VCPU, oli Valkey jõudlus 678 tuhat SET-päringut sekundis ja Redise oma 563 tuhat päringut sekundis, kusjuures samaaegsete ühenduste arv oli piiratud 256-ga. Kui ühenduste arv suurenes 400-ni, suurenes Valkey jõudlus 832 tuhande SET-päringuni sekundis.

Pärast katkestuste käsitlemise optimeerimist süsteemis, et vähendada Valkey kontekstilülitite arvu, õnnestus meil suurendada jõudlust 999.8 tuhande SET-päringuni sekundis. Optimeerimise põhiolemus taandus katkestuste käsitlemiseks 2 VCPU eraldamisele ja ülejäänud 6 VCPU sidumisele Valkey ja Redise I/O töötlemislõimedega, et välistada käitlejate migratsioon protsessorite vahel. sudo ethtool -L ens34 combined 2 # piirab IRQ-käitlejate arvu 2-ni grep ens34 /proc/interrupts # vaata, millised käitlejad on kaasatud (99 ja 100) echo 1 | sudo tee /proc/irq/99/smp_affinity # seob käitleja 99 tuumaga 1 echo 2 | sudo tee /proc/irq/100/smp_affinity # seo käitleja 100 tuumaga 2 # Käivita andmebaasi juhtimissüsteem (Redise puhul muuda valkey/valkey:8.1.1 väärtuseks redis:8.0) konteineri sidumisega protsessori tuumadega 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
Jõudluse testimiseks kasutati järgmist käsku: 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
Allikas: opennet.ru
