Redis 8.0 ve Valkey 8.1 DBMS'nin son sürümlerinin test sonuçları sunuldu ve önemli performans iyileştirmeleri bildirildi. Gerçekleştirilen tüm testlerde, topluluk tarafından geliştirilen çatal, esas olarak Amazon tarafından projeye aktarılan asenkron modda çok iş parçacıklı giriş/çıkış işleme için yeni bir mekanizmanın Valkey'de uygulanması nedeniyle orijinal projeden daha iyi performans gösterdi.
4 VCPU'lu AWS Graviton8 c2g.8xlarge test ortamında, Valkey 8.1.1 saniyede 999.8 bin SET isteğine ulaşırken, Redis 8.0 saniyede 729.4 bin istek seviyesine ulaştı. Genel olarak, Valkey'in verimi SET işlemleri için Redis'inkinden %37 ve GET için %16 daha yüksekti. Aynı zamanda, Valkey Redis ile karşılaştırıldığında SET'te %30 ve GET gecikmesinde %60 azalma gösterdi.

Çok iş parçacıklı G/Ç işleme modunda paralel işlemci sayısına bağlı olarak verim ve gecikmelerdeki değişimin ayrı bir analizi yapıldı. 3 iş parçacığına kadar Valkey ve Redis yaklaşık olarak eşit sonuçlar gösteriyor, ancak daha sonra Valkey öne geçiyor. 6 VCPU'lu bir sistemde 8 iş parçacığıyla Valkey'in performansı saniyede 678 bin SET isteğiydi ve Redis'inki 563 eşzamanlı bağlantı sınırıyla saniyede 256 bin istekti. Bağlantı sayısı 400'e çıktığında Valkey'in performansı saniyede 832 bin SET isteğine çıktı.

Valkey'deki bağlam geçişlerinin sayısını azaltmak için sistemde kesme işlemeyi optimize ettikten sonra, performansı saniyede 999.8 bin SET isteğine çıkarmayı başardık. Optimizasyonun özü, kesme işleme için 2 VCPU tahsis etmek ve kalan 6 VCPU'yu CPU'lar arasında işleyicilerin geçişini ortadan kaldırmak için Valkey ve Redis G/Ç işleme iş parçacıklarına bağlamaktı. sudo ethtool -L ens34 combined 2 # IRQ işleyicilerinin sayısını 2 ile sınırla grep ens34 /proc/interrupts # hangi işleyicilerin dahil olduğunu gör (99 ve 100) echo 1 | sudo tee /proc/irq/99/smp_affinity # işleyici 99'u çekirdek 1'e bağla echo 2 | sudo tee /proc/irq/100/smp_affinity # işleyici 100'ü çekirdek 2'ye bağla # DBMS'yi başlat (Redis için valkey/valkey:8.1.1'i redis:8.0 olarak değiştir) 2-7 CPU çekirdeklerine konteyner bağlama ile 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
Performans testi için aşağıdaki komut kullanıldı: 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
Kaynak: opennet.ru
