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-ի թողունակությունը SET գործողությունների համար 37%-ով ավելի բարձր էր, քան Redis-ինը, և 16%-ով՝ GET-ի համար։ Միևնույն ժամանակ, Redis-ի համեմատ, Valkey-ն ցույց է տվել SET-ի 30%-ով և GET լատենտության 60%-ով նվազում։

 Valkey-ի և Redis DBMS-ի աշխատանքի համեմատություն

Առանձին վերլուծություն է իրականացվել բազմաթելային I/O մշակման ռեժիմում զուգահեռ պրոցեսորների քանակից կախված թողունակության և ուշացումների փոփոխության վերաբերյալ: Մինչև 3 թել Valkey-ն և Redis-ը ցույց են տալիս մոտավորապես հավասար արդյունքներ, բայց հետո Valkey-ն առաջատար դիրք է գրավում: 6 VCPU-ներով համակարգում 8 թելերի դեպքում Valkey-ի արտադրողականությունը կազմել է վայրկյանում 678 հազար SET հարցում, իսկ Redis-ին՝ վայրկյանում 563 հազար հարցում՝ միաժամանակյա 256 միացումների սահմանաչափով: Երբ միացումների քանակը մեծացավ մինչև 400, Valkey-ի արտադրողականությունը մեծացավ մինչև վայրկյանում 832 հազար SET հարցում:

 Valkey-ի և Redis DBMS-ի աշխատանքի համեմատություն

Valkey-ում համատեքստային անջատիչների քանակը նվազեցնելու համար համակարգում ընդհատումների մշակման օպտիմալացումից հետո, մեզ հաջողվեց բարձրացնել արտադրողականությունը մինչև 999.8 հազար SET հարցում վայրկյանում: Օպտիմալացման էությունը կայանում էր ընդհատումների մշակման համար 2 VCPU-ների հատկացման և մնացած 6 VCPU-ների Valkey և Redis I/O մշակման թելերին կապելու մեջ՝ պրոցեսորների միջև մշակիչների տեղափոխությունը վերացնելու համար: 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 # կապել մշակիչը 100 միջուկ 2-ի հետ # Մեկնարկել տվյալների բազայի կառավարման համակարգը (Redis-ի համար, փոխել valkey/valkey:8.1.1-ը redis:8.0-ի)՝ կոնտեյներ կապելով պրոցեսորի միջուկների հետ 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

Source: opennet.ru

Добавить комментарий