Redis不同版本,内存分配,硬件的性能研究
前言
Konw more ! Do more ! Gain more !
骨折之后开始减肥. 前段时间跳绳导致膝盖不舒服,现在改骑车和走路.
在有限的没人有烦的时间里,还是想能够多学习一些东西.
之前了解了 isolcpus 现在突然想内存分配可能也有性能影响.
所以想研究一下redis在jemalloc和tcmalloc内存分配器下面的性能表现.
安装-tcmalloc
第一步: 先进性tcmalloc的安装.
晚上的方法是使用 gperftools进行安装
git clone https://github.com/gperftools/gperftools.git
cd gperftools
./autogen.sh
./configure --enable-frame-pointers
make
make install
注意: 我没加 --enable-frame-pointers 也成功了.诡异.
编译redis
注意需要增加参数:
make USE_TCMALLOC=yes
才会使用,还注意一点会有很多错误提示:
#warning "google/tcmalloc.h is deprecated. Use gperftools/tcmalloc.h instead"
但是貌似不影响能够正常安装完成
启动验证
cd src
./redis-server
然后进行验证:
lsof -n | grep tcmalloc
验证 redis-server 其实已经可以用到 tcmalloc的内存分配器了
不使用TCMALLOC的参数编译的话. 就可以看到:
lsof -n | grep jemalloc
也可以通过 redis-cli info来进行查看
mem_allocator:tcmalloc-2.10
会在内存分配器的配置界指名本次启动使用的 内存分配器.
性能验证
redis-benchmark -h 127.0.0.1 -p 6379 -c 100 -n 1000000 -d 1000 -r 100000 -t set
tcmalloc:60157.62
jemalloc:62952.47
ptmalloc:61214.49
干 啥都不是.. 还是je最好.
不同版本的验证
注意这次都是jemalloc
第一次预热. 取第二次的测试结果
6.2.12 : 62952.47
7.2rc1 : 60576.69
7.0.11 : 62837.75
差异不大, 不过rc的确不行
另外N年前的机器的确也不行..
我用阿里云的Intel 8369HB 测试:
8369HB: 141522.78
版本为6.2.8
AMD 9T34的结果为:
9T34 : 213310.58
衣不如新人不如故. 设备该换就得换啊. AMD YES!