Valkey์™€ Redis DBMS ์„ฑ๋Šฅ ๋น„๊ต

Redis 8.0๊ณผ Valkey 8.1 DBMS ์ตœ์‹  ๋ฆด๋ฆฌ์Šค ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ๋ฅผ ์ œ์‹œํ•˜๋ฉฐ, ์ƒ๋‹นํ•œ ์„ฑ๋Šฅ ์ตœ์ ํ™”๊ฐ€ ์ด๋ฃจ์–ด์กŒ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ํ…Œ์ŠคํŠธ์—์„œ ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ๊ฐœ๋ฐœํ•œ ํฌํฌ(fork)๋Š” ๊ธฐ์กด ํ”„๋กœ์ ํŠธ๋ณด๋‹ค ์šฐ์ˆ˜ํ•œ ์„ฑ๋Šฅ์„ ๋ณด์˜€์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ฃผ๋กœ Amazon์—์„œ Valkey ํ”„๋กœ์ ํŠธ์— ๋„์ž…ํ•œ ๋น„๋™๊ธฐ ๋ชจ๋“œ์˜ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ์ž…์ถœ๋ ฅ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ์ƒˆ๋กœ์šด ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๊ตฌํ˜„ํ•œ ๋•๋ถ„์ž…๋‹ˆ๋‹ค.

4๊ฐœ์˜ VCPU๋ฅผ ์‚ฌ์šฉํ•˜๋Š” AWS Graviton8 c2g.8xlarge ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์—์„œ Valkey 8.1.1์€ ์ดˆ๋‹น 999.8์ฒœ ๊ฑด์˜ SET ์š”์ฒญ ์ฒ˜๋ฆฌ๋Ÿ‰์„ ๋‹ฌ์„ฑํ•œ ๋ฐ˜๋ฉด, Redis 8.0์€ ์ดˆ๋‹น 729.4์ฒœ ๊ฑด์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์ „๋ฐ˜์ ์œผ๋กœ Valkey์˜ ์ฒ˜๋ฆฌ๋Ÿ‰์€ SET ์ž‘์—…์—์„œ Redis๋ณด๋‹ค 37%, GET ์ž‘์—…์—์„œ 16% ๋†’์•˜์Šต๋‹ˆ๋‹ค. ๋™์‹œ์—, Valkey๋Š” Redis ๋Œ€๋น„ SET ์ง€์—ฐ ์‹œ๊ฐ„์€ 30%, GET ์ง€์—ฐ ์‹œ๊ฐ„์€ 60% ๊ฐ์†Œํ–ˆ์Šต๋‹ˆ๋‹ค.

 Valkey์™€ Redis DBMS ์„ฑ๋Šฅ ๋น„๊ต

๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ I/O ์ฒ˜๋ฆฌ ๋ชจ๋“œ์—์„œ ๋ณ‘๋ ฌ ํ”„๋กœ์„ธ์„œ ์ˆ˜์— ๋”ฐ๋ฅธ ์ฒ˜๋ฆฌ๋Ÿ‰ ๋ฐ ์ง€์—ฐ ์‹œ๊ฐ„์˜ ๋ณ€ํ™”์— โ€‹โ€‹๋Œ€ํ•œ ๋ณ„๋„์˜ ๋ถ„์„์„ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ตœ๋Œ€ 3๊ฐœ์˜ ์Šค๋ ˆ๋“œ๊นŒ์ง€ Valkey์™€ Redis๋Š” ๊ฑฐ์˜ ๋น„์Šทํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์˜€์ง€๋งŒ, ๊ทธ ์ด์ƒ์—์„œ๋Š” Valkey๊ฐ€ ์šฐ์œ„๋ฅผ ์ฐจ์ง€ํ–ˆ์Šต๋‹ˆ๋‹ค. 6๊ฐœ์˜ VCPU๊ฐ€ ์žˆ๋Š” ์‹œ์Šคํ…œ์—์„œ 8๊ฐœ์˜ ์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ Valkey์˜ ์„ฑ๋Šฅ์€ ์ดˆ๋‹น 678๋งŒ 563์ฒœ ๊ฑด์˜ SET ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ–ˆ๊ณ , Redis๋Š” ๋™์‹œ ์—ฐ๊ฒฐ ์ˆ˜ 256๊ฐœ๋กœ ์ œํ•œํ–ˆ์„ ๋•Œ ์ดˆ๋‹น 400๋งŒ 832์ฒœ ๊ฑด์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์—ฐ๊ฒฐ ์ˆ˜๊ฐ€ XNUMX๊ฐœ๋กœ ์ฆ๊ฐ€ํ–ˆ์„ ๋•Œ Valkey์˜ ์„ฑ๋Šฅ์€ ์ดˆ๋‹น XNUMX๋งŒ XNUMX์ฒœ ๊ฑด์œผ๋กœ ์ฆ๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

 Valkey์™€ Redis DBMS ์„ฑ๋Šฅ ๋น„๊ต

Valkey์—์„œ ์ปจํ…์ŠคํŠธ ์Šค์œ„์น˜ ํšŸ์ˆ˜๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด ์‹œ์Šคํ…œ์˜ ์ธํ„ฐ๋ŸฝํŠธ ์ฒ˜๋ฆฌ๋ฅผ ์ตœ์ ํ™”ํ•œ ํ›„, ์„ฑ๋Šฅ์„ ์ดˆ๋‹น 999.8์ฒœ ๊ฑด์˜ SET ์š”์ฒญ์œผ๋กœ ํ–ฅ์ƒ์‹œ์ผฐ์Šต๋‹ˆ๋‹ค. ์ตœ์ ํ™”์˜ ํ•ต์‹ฌ์€ ์ธํ„ฐ๋ŸฝํŠธ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด 2๊ฐœ์˜ VCPU๋ฅผ ํ• ๋‹นํ•˜๊ณ  ๋‚˜๋จธ์ง€ 6๊ฐœ์˜ VCPU๋ฅผ Valkey ๋ฐ Redis I/O ์ฒ˜๋ฆฌ ์Šค๋ ˆ๋“œ์— ๋ฐ”์ธ๋”ฉํ•˜์—ฌ 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 # ํ•ธ๋“ค๋Ÿฌ 100์„ ์ฝ”์–ด 2์— ๋ฐ”์ธ๋”ฉ # ์ปจํ…Œ์ด๋„ˆ๋ฅผ CPU ์ฝ”์–ด 8.1.1-8.0์— ๋ฐ”์ธ๋”ฉํ•˜์—ฌ DBMS ์‹œ์ž‘(Redis์˜ ๊ฒฝ์šฐ valkey/valkey:2์„ redis: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

์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด ๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. 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

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€