Redis 8.0 اور Valkey 8.1 DBMS کی تازہ ترین ریلیز کی جانچ کے نتائج پیش کیے گئے ہیں، جن میں نمایاں کارکردگی کی اصلاح کا اعلان کیا گیا ہے۔ کئے گئے تمام ٹیسٹوں میں، کمیونٹی کی طرف سے تیار کردہ فورک نے اصل پراجیکٹ سے بہتر کارکردگی کا مظاہرہ کیا، بنیادی طور پر ایمیزون کی طرف سے پروجیکٹ میں منتقل کیے گئے ملٹی تھریڈڈ ان پٹ/آؤٹ پٹ پروسیسنگ کے لیے ایک نئے میکانزم کے والکی میں نفاذ کی وجہ سے۔
AWS Graviton4 c8g.2xlarge ٹیسٹ ماحول میں 8 VCPUs کے ساتھ، Valkey 8.1.1 نے فی سیکنڈ 999.8 ہزار SET درخواستوں کا تھرو پٹ حاصل کیا، جبکہ Redis 8.0 نے فی سیکنڈ 729.4 ہزار درخواستوں کی سطح حاصل کی۔ مجموعی طور پر، والکی کا تھرو پٹ SET آپریشنز کے لیے Redis کے مقابلے میں 37% زیادہ اور GET کے لیے 16% زیادہ تھا۔ ایک ہی وقت میں، Redis کے مقابلے میں، Valkey نے SET میں 30% کمی اور GET لیٹنسی میں %60 کمی کا مظاہرہ کیا۔

ملٹی تھریڈڈ I/O پروسیسنگ موڈ میں متوازی پروسیسرز کی تعداد کے لحاظ سے تھرو پٹ اور تاخیر میں تبدیلی کا ایک الگ تجزیہ کیا گیا۔ 3 تھریڈز تک، Valkey اور Redis تقریباً مساوی نتائج دکھاتے ہیں، لیکن پھر Valkey سبقت لے جاتا ہے۔ 6 VCPUs والے سسٹم پر 8 تھریڈز کے ساتھ، Valkey کی کارکردگی 678 ہزار SET درخواستیں فی سیکنڈ تھی، اور Redis کی 563 ہزار درخواستیں فی سیکنڈ تھی جس کی حد 256 بیک وقت کنکشنز تھی۔ جب کنکشنز کی تعداد بڑھ کر 400 ہو گئی، Valkey کی کارکردگی بڑھ کر 832 ہزار SET درخواستیں فی سیکنڈ ہو گئی۔

Valkey میں سیاق و سباق کے سوئچز کی تعداد کو کم کرنے کے لیے سسٹم میں انٹرپٹ ہینڈلنگ کو بہتر بنانے کے بعد، ہم کارکردگی کو 999.8 ہزار SET درخواستیں فی سیکنڈ تک بڑھانے میں کامیاب ہو گئے۔ اصلاح کا نچوڑ 2 VCPUs کو وقفے سے ہینڈلنگ کے لیے مختص کرنے اور باقی 6 VCPUs کو Valkey اور Redis I/O پروسیسنگ تھریڈز سے منسلک کرنے پر آیا تاکہ CPUs کے درمیان ہینڈلرز کی منتقلی کو ختم کیا جا سکے۔ sudo ethtool -L ens34 مشترکہ 2 # IRQ ہینڈلرز کی تعداد کو 2 grep ens34 تک محدود کریں /proc/interrupts # دیکھیں کہ کون سے ہینڈلرز شامل ہیں (99 اور 100) echo 1 | sudo tee /proc/irq/99/smp_affinity # bind handler 99 to core 1 echo 2 | sudo tee /proc/irq/100/smp_affinity # bind ہینڈلر 100 to core 2 # DBMS شروع کریں (Redis کے لیے، valkey/valkey:8.1.1 کو redis:8.0 میں تبدیل کریں) کنٹینر کو CPU cores 2-7 docker run کے ساتھ بائنڈنگ کرنے کے ساتھ —network″—»cpus=»-spu=2-set» -network» valkey/valkey:7 \ —محفوظ کریں «» —ضمیمہ نہیں —io-threads 8.1.1 \ —protected-mode no —maxmemory 6gb
کارکردگی کی جانچ کے لیے، درج ذیل کمانڈ کا استعمال کیا گیا تھا: 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 \ -n 100000000 تھریڈز 256 -d 3000000
ماخذ: opennet.ru
