redis 性能测试

  准备环境:

  因为找不到可用的1000M网络机器,使用一根直通线将两台笔记本连起来组成1000M Ethernet网。没错,是直通线现在网卡都能自适应交叉线、直通线,速度不受影响,用了一段时间机器也没出问题。

  服务端:T420 i5-2520M(2.5G)/8G ubuntu 11.10

  客户端:Acer i5-2430M(2.4G)/4G mint 11

  redis版本:2.6.9

  测试脚本:./redis-benchmark -h xx -p xx -t set -q -r 1000 -l -d 20

  

长度 速度/sec 带宽(MByte/s) 发送+接收 CPU CPU Detail
20Byte 17w 24M+12M 98.00% Cpu0 : 21.0%us, 40.7%sy, 0.0%ni, 4.3%id, 0.0%wa, 0.0%hi, 34.0%si, 0.0%st
100Byte 17w 37M+12M 97.00% Cpu0 : 20.3%us, 37.9%sy, 0.0%ni, 7.0%id, 0.0%wa, 0.0%hi, 34.9%si, 0.0%st
512Byte 12w 76M+9M 87.00% Cpu0 : 20.9%us, 33.2%sy, 0.0%ni, 25.6%id, 0.0%wa, 0.0%hi, 20.3%si, 0.0%st
1K 9w 94M+8M 81.00% Cpu0 : 19.9%us, 30.2%sy, 0.0%ni, 34.2%id, 0.0%wa, 0.0%hi, 15.6%si, 0.0%st
2K 5w 105M+6M 77.00% Cpu0 : 18.0%us, 32.0%sy, 0.0%ni, 34.7%id, 0.0%wa, 0.0%hi, 15.3%si, 0.0%st
5K 2.2w 119M+3.2M 77.00% Cpu0 : 22.5%us, 32.8%sy, 0.0%ni, 32.8%id, 0.0%wa, 0.0%hi, 11.9%si, 0.0%st
10K 1.1w 119M+1.7M 70.00% Cpu0 : 18.2%us, 29.8%sy, 0.0%ni, 42.7%id, 0.0%wa, 0.0%hi, 9.3%si, 0.0%st
20K 0.57w 120M+1M 58.00% Cpu0 : 17.8%us, 26.4%sy, 0.0%ni, 46.2%id, 0.0%wa, 0.0%hi, 9.6%si, 0.0%st

  value 在1K以上时,1000M网卡轻松的被跑慢,而且redis-server cpu连一个核心都没占用到,可见redis高效,redis的服务也不需要太高配置,瓶颈在网卡速度。

  整理看redis的us都在20%左右,用户层代码资源占用比例都很小。

  

  value 如果很小时可能看起来有些浪费,那多开几个redis-server 看看,value :20byte:

  2个redis实例时:

长度 速度/sec 带宽(MByte/s) 发送+接收 CPU CPU Detail
20Byte 10w+10w 26M+14M 98%+98% Cpu0 : 18.9%us, 20.5%sy, 0.0%ni, 0.3%id, 0.0%wa, 0.0%hi, 60.3%si, 0.0%st
Cpu1 : 41.2%us, 56.5%sy, 0.0%ni, 2.3%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st

  3个redis实例时:

 

长度 速度/sec 带宽(MByte/s) 发送+接收 CPU CPU Detail
20Byte 7w*3 26M+14M 67%*3 Cpu0 : 20.6%us, 19.9%sy, 0.0%ni, 0.7%id, 0.0%wa, 0.0%hi, 58.8%si, 0.0%st
Cpu1 : 37.9%us, 54.2%sy, 0.0%ni, 8.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu2 : 5.7%us, 4.7%sy, 0.0%ni, 88.0%id, 1.7%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu3 : 5.6%us, 2.6%sy, 0.0%ni, 91.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st

 

小包的时候网卡中断处理是瓶颈,大包时网卡速度又是瓶颈,故redis单线程处理除了无线程安全考虑外,就是一个线程处理毫无压力,多了没用不着。

小的value可以使用pipleline方式,tcp开启nagle算法,通过tcp合包的方式估计能够提高处理能力。

看起来三个实例都在同一个核心是跑,CPU0 CPU1 是同一个物理核心超线程。软中断占用60%,软中断在固定CPU成为瓶颈,下次分散下软中断到其他cpu再测试看效果。

 

---------------

补充,上面是用笔记本测试结果,和生产机器还是有不小差距的,仅供参考; 我另外一篇文章有记录生产环境服务器测试结果。

你可能感兴趣的:(redis)