Confronto delle prestazioni dei DBMS Valkey e Redis

Vengono presentati i risultati dei test delle ultime versioni dei DBMS Redis 8.0 e Valkey 8.1, in cui sono state dichiarate significative ottimizzazioni delle prestazioni. In tutti i test condotti, il fork sviluppato dalla community ha superato le prestazioni del progetto originale, principalmente grazie all'implementazione in Valkey di un nuovo meccanismo per l'elaborazione multi-thread di input/output in modalità asincrona, trasferito al progetto da Amazon.

Nell'ambiente di test AWS Graviton4 c8g.2xlarge con 8 VCPU, Valkey 8.1.1 ha raggiunto un throughput di 999.8 mila richieste SET al secondo, mentre Redis 8.0 ha raggiunto un livello di 729.4 mila richieste al secondo. Complessivamente, il throughput di Valkey è stato superiore del 37% rispetto a Redis per le operazioni SET e del 16% per le operazioni GET. Allo stesso tempo, rispetto a Redis, Valkey ha dimostrato una riduzione del 30% della latenza SET e del 60% della latenza GET.

 Confronto delle prestazioni dei DBMS Valkey e Redis

È stata condotta un'analisi separata della variazione di throughput e ritardi in base al numero di processori paralleli in modalità di elaborazione I/O multi-thread. Fino a 3 thread, Valkey e Redis mostrano risultati pressoché equivalenti, ma poi Valkey prende il sopravvento. Con 6 thread su un sistema con 8 VCPU, le prestazioni di Valkey sono state di 678 richieste SET al secondo, mentre quelle di Redis sono state di 563 richieste al secondo, con un limite di 256 connessioni simultanee. Quando il numero di connessioni è aumentato a 400, le prestazioni di Valkey sono aumentate a 832 richieste SET al secondo.

 Confronto delle prestazioni dei DBMS Valkey e Redis

Dopo aver ottimizzato la gestione degli interrupt nel sistema per ridurre il numero di cambi di contesto in Valkey, siamo riusciti ad aumentare le prestazioni a 999.8 mila richieste SET al secondo. L'essenza dell'ottimizzazione si è ridotta all'allocazione di 2 VCPU per la gestione degli interrupt e all'associazione delle restanti 6 VCPU ai thread di elaborazione I/O di Valkey e Redis per eliminare la migrazione dei gestori tra le CPU. sudo ethtool -L ens34 combined 2 # limita il numero di gestori IRQ a 2 grep ens34 /proc/interrupts # verifica quali gestori sono coinvolti (99 e 100) echo 1 | sudo tee /proc/irq/99/smp_affinity # associa il gestore 99 al core 1 echo 2 | sudo tee /proc/irq/100/smp_affinity # associa il gestore 100 al core 2 # Avvia il DBMS (per Redis, modifica valkey/valkey:8.1.1 in redis:8.0) con l'associazione del contenitore ai core della CPU 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

Per i test delle prestazioni è stato utilizzato il seguente comando: 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

Fonte: opennet.ru

Aggiungi un commento