Confronto delle prestazioni del DBMS Valkey e Redis

Sono stati presentati i risultati dei test delle nuove versioni dei database Redis 8.0 e Valkey 8.1, in cui sono state annunciate significative ottimizzazioni delle prestazioni. In tutti i test condotti, il fork sviluppato dalla comunità ha superato il progetto originale, principalmente grazie all'implementazione in Valkey di un nuovo meccanismo per l'elaborazione multithread dell'input/output in modalità asincrona, fornito al progetto da Amazon.

In un ambiente di test AWS Graviton4 c8g.2xlarge con 8 VCPU, Valkey 8.1.1 ha raggiunto una prestazione di 999,8 mila richieste SET al secondo, mentre in Redis 8.0 è stato raggiunto un livello di 729,4 mila richieste al secondo. In generale, la larghezza di banda di Valkey è risultata superiore a quella di Redis del 37% per le operazioni SET e del 16% per le operazioni GET. Allo stesso tempo, rispetto a Redis, il progetto Valkey ha mostrato una riduzione dei ritardi nel trattamento delle richieste del 30% per le operazioni SET e del 60% per le operazioni GET.

Confronto delle prestazioni del DBMS Valkey e Redis

È stata condotta un'analisi separata delle variazioni della larghezza di banda e dei ritardi in base al numero di gestori eseguiti in parallelo in modalità di elaborazione multithread dell'input/output. Fino a 3 thread, Valkey e Redis mostrano risultati abbastanza simili, ma poi Valkey prende il sopravvento. Con 6 thread su un sistema con 8 VCPU, la prestazione di Valkey è stata di 678 mila richieste SET al secondo, mentre Redis ha registrato 563 mila richieste al secondo con un limite di 256 connessioni simultanee. Aumentando le connessioni a 400, la prestazione di Valkey è aumentata fino a 832 mila richieste SET al secondo.

Confronto delle prestazioni del DBMS Valkey e Redis

Dopo aver ottimizzato l'elaborazione delle interruzioni nel sistema per ridurre il numero di cambi di contesto, Valkey è riuscito ad aumentare la prestazione fino a 999,8 mila richieste SET al secondo. L'ottimizzazione consiste nell'assegnare 2 VCPU per l'elaborazione delle interruzioni e collegare le 6 VCPU rimanenti ai thread di elaborazione dell'input/output di Valkey e Redis, per escludere la migrazione dei gestori tra CPU. sudo ethtool -L ens34 combined 2 # limitiamo a 2 il numero di gestori IRQ grep ens34 /proc/interrupts # vediamo quali gestori sono attivi (99 e 100) echo 1 | sudo tee /proc/irq/99/smp_affinity # colleghiamo il gestore 99 al core 1 echo 2 | sudo tee /proc/irq/100/smp_affinity # colleghiamo il gestore 100 al core 2 # Avviamo il DB (per Redis cambiare valkey/valkey:8.1.1 in redis:8.0) con il collegamento del contenitore ai core 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 testare le prestazioni è stato utilizzato il 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

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster