Σύγκριση της απόδοσης των Valkey και Redis DBMS

Παρουσιάζονται τα αποτελέσματα των δοκιμών των τελευταίων εκδόσεων των Redis 8.0 και Valkey 8.1 DBMS, στα οποία δηλώθηκαν σημαντικές βελτιστοποιήσεις απόδοσης. Σε όλες τις δοκιμές που πραγματοποιήθηκαν, το fork που αναπτύχθηκε από την κοινότητα ξεπέρασε το αρχικό έργο, κυρίως λόγω της εφαρμογής στο 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.

 Σύγκριση της απόδοσης των Valkey και Redis DBMS

Διεξήχθη ξεχωριστή ανάλυση της αλλαγής στην απόδοση και στις καθυστερήσεις ανάλογα με τον αριθμό των παράλληλων επεξεργαστών στη λειτουργία επεξεργασίας πολλαπλών νημάτων I/O. Έως 3 νήματα, οι Valkey και Redis παρουσιάζουν περίπου ίσα αποτελέσματα, αλλά στη συνέχεια η Valkey παίρνει το προβάδισμα. Με 6 νήματα σε ένα σύστημα με 8 VCPU, η απόδοση της Valkey ήταν 678 χιλιάδες αιτήματα SET ανά δευτερόλεπτο και της Redis ήταν 563 χιλιάδες αιτήματα ανά δευτερόλεπτο με όριο 256 ταυτόχρονων συνδέσεων. Όταν ο αριθμός των συνδέσεων αυξήθηκε σε 400, η ​​απόδοση της Valkey αυξήθηκε σε 832 χιλιάδες αιτήματα SET ανά δευτερόλεπτο.

 Σύγκριση της απόδοσης των Valkey και Redis DBMS

Αφού βελτιστοποιήσαμε τον χειρισμό διακοπών στο σύστημα για να μειώσουμε τον αριθμό των διακοπτών περιβάλλοντος στο Valkey, καταφέραμε να αυξήσουμε την απόδοση σε 999.8 χιλιάδες αιτήματα SET ανά δευτερόλεπτο. Η ουσία της βελτιστοποίησης κατέληξε στην ανάθεση 2 VCPU για τον χειρισμό διακοπών και στη σύνδεση των υπόλοιπων 6 VCPU στα νήματα επεξεργασίας εισόδου/εξόδου Valkey και Redis για την εξάλειψη της μετεγκατάστασης χειριστών μεταξύ CPU. 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 # bind handler 100 to core 2 # Ξεκινήστε το DBMS (για Redis, αλλάξτε το valkey/valkey:8.1.1 σε redis:8.0) με container binding στους πυρήνες CPU 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

Προσθέστε ένα σχόλιο