Preséntanse os resultados das probas das últimas versións dos SGBD Redis 8.0 e Valkey 8.1, nas que se declararon optimizacións de rendemento significativas. En todas as probas realizadas, o fork desenvolvido pola comunidade superou o proxecto orixinal, principalmente debido á implementación en Valkey dun novo mecanismo para o procesamento de entrada/saída multifío en modo asíncrono, transferido ao proxecto por Amazon.
No ambiente de probas AWS Graviton4 c8g.2xlarge con 8 VCPU, Valkey 8.1.1 alcanzou un rendemento de 999.8 8.0 solicitudes SET por segundo, mentres que Redis 729.4 alcanzou un nivel de 37 16 solicitudes por segundo. En xeral, o rendemento de Valkey foi un 30 % maior que o de Redis para as operacións SET e un 60 % maior para GET. Ao mesmo tempo, en comparación con Redis, Valkey demostrou unha redución do XNUMX % na latencia SET e do XNUMX % na latencia GET.

Realizouse unha análise independente do cambio no rendemento e nos atrasos dependendo do número de procesadores paralelos no modo de procesamento de E/S multifío. Ata 3 fíos, Valkey e Redis mostran resultados aproximadamente iguais, pero entón Valkey toma a dianteira. Con 6 fíos nun sistema con 8 VCPU, o rendemento de Valkey foi de 678 mil solicitudes SET por segundo e o de Redis foi de 563 mil solicitudes por segundo cun límite de 256 conexións simultáneas. Cando o número de conexións aumentou a 400, o rendemento de Valkey aumentou a 832 mil solicitudes SET por segundo.

Despois de optimizar a xestión de interrupcións no sistema para reducir o número de cambios de contexto en Valkey, conseguimos aumentar o rendemento a 999.8 mil solicitudes SET por segundo. A esencia da optimización reduciuse a asignar 2 VCPU para a xestión de interrupcións e vincular as 6 VCPU restantes aos fíos de procesamento de E/S de Valkey e Redis para eliminar a migración de xestores entre CPU. sudo ethtool -L ens34 combined 2 # limitar o número de xestores de IRQ a 2 grep ens34 /proc/interrupts # ver que xestores están implicados (99 e 100) echo 1 | sudo tee /proc/irq/99/smp_affinity # vincular o xestor 99 ao núcleo 1 echo 2 | sudo tee /proc/irq/100/smp_affinity # vincula o xestor 100 ao núcleo 2 # Inicia o SGBD (para Redis, cambia valkey/valkey:8.1.1 a redis:8.0) coa vinculación de contedores aos núcleos da 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
Para as probas de rendemento, empregouse o seguinte 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
