Redis不同版本,内存分配,硬件的性能研究

发布时间 2023-12-17 09:26:22作者: 济南小老虎

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!