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!

Redis不同版本,内存分配,硬件的性能研究的更多相关文章

  1. Memcache 内存分配策略和性能(使用)状态检查【转】

    前言: 一直在使用Memcache,但是对其内部的问题,如它内存是怎么样被使用的,使用一段时间后想看看一些状态怎么样?一直都不清楚,查了又忘记,现在整理出该篇文章,方便自己查阅.本文不涉及安装.操作. ...

  2. Memcache 内存分配策略和性能(使用)状态检查

    前言: 一直在使用Memcache,但是对其内部的问题,如它内存是怎么样被使用的,使用一段时间后想看看一些状态怎么样?一直都不清楚,查了又忘记,现在整理出该篇文章,方便自己查阅.本文不涉及安装.操作. ...

  3. 动态内存分配导致Javascript性能的问题

    内存分配对性能的影响是很大的,分配内存本身需要时间,垃圾回收器回收内存也需要时间,所以应该尽量避免在堆里分配内存.不过直到最近优化HoLa cantk时,我才深刻的体会到内存分配对性能的影响,其中有一 ...

  4. SQL Server ->> Memory Allocation Mechanism and Performance Analysis(内存分配机制与性能分析)之 -- Minimum server memory与Maximum server memory

    Minimum server memory与Maximum server memory是SQL Server下配置实例级别最大和最小可用内存(注意不等于物理内存)的服务器配置选项.它们是管理SQL S ...

  5. JVM性能优化系列-(2) 垃圾收集器与内存分配策略

    2. 垃圾收集器与内存分配策略 垃圾收集(Garbage Collection, GC)是JVM实现里非常重要的一环,JVM成熟的内存动态分配与回收技术使Java(当然还有其他运行在JVM上的语言,如 ...

  6. Redis深入学习笔记(六)Redis内存分配

    Redis的高效可以说是轻量级的epoll模型和基于内存的读写共同组成的,关于epoll对于以前的select或者poll的性能优势这里不做介绍,本篇主要介绍领一个重点,Redis的内存分配原理. 获 ...

  7. Redis的内存分配

    内存分配 Redis进程的内存消耗主要包括:自身内存 + 对象内存 + 缓冲内存 + 内存碎片.1 自身内存 Redis自身内存消耗非常少,通常used_memory在800KB左右,used_mem ...

  8. 图片系列(6)不同版本上 Bitmap 内存分配与回收原理对比

    请点赞关注,你的支持对我意义重大. Hi,我是小彭.本文已收录到 GitHub · AndroidFamily 中.这里有 Android 进阶成长知识体系,有志同道合的朋友,关注公众号 [彭旭锐] ...

  9. 【朝花夕拾】Android性能篇之(二)Java内存分配

    前言        在内存方面,相比于C/C++程序员,咱们java系程序员算是比较幸运的,因为对于内存的分配和回收,都交给了JVM来处理了,而不需要手动在代码中去完成.有了虚拟机内存管理机制,也就不 ...

  10. CentOS的Redis内存分配策略配置

    安装了一主两从节点,启动之后发现有一个警告: 大概是说overcommit_memory设置成了0,在低内存环境下后台保存可能会失败,设置成1重启可解决. 然后,不太懂这个配置的含义,google一把 ...

随机推荐

  1. MySQL|mysql-索引

    1.索引是什么 1.1索引简介 索引是表的目录,是数据库中专门用于帮助用户快速查询数据的一种数据结构.类似于字典中的目录,查找字典内容时可以根据目录查找到数据的存放位置,以及快速定位查询数据.对于索引 ...

  2. MySQL 基础(三)事务与 MVCC

    事务 事务是一组原子性的 SQL 操作,或者被称为一个独立的工作单元,如果数据库引擎能够成功地对数据库应用该组的全部 SQL 语句,那么就会全部执行,否则全部不执行. 事务的特性 在关系数据库管理系统 ...

  3. Java并发(二十二)----wait notify的正确姿势

    开始之前先看看,sleep(long n) 和 wait(long n) 的区别: 1) sleep 是 Thread 的静态方法,而 wait 是 Object 的方法 2) sleep 不需要强制 ...

  4. 斯坦福 UE4 C++ ActionRoguelike游戏实例教程 15.创建持续效果BUFF

    斯坦福课程 UE4 C++ ActionRoguelike游戏实例教程 0.绪论 概述 本篇文章对应Lecture 18 – Creating Buffs, World Interaction, 71 ...

  5. PyTorch项目源码学习(2)——Tensor代码结构初步学习

    PyTorch版本:1.10.0 Tensor Tensor是Pytorch项目较为重要的一部分,其中的主要功能如存储,运算由C++和CUDA实现,本文主要从前端开始探索学习Tensor的代码结构. ...

  6. 1、Flutter把内容单独抽离成一个组件

    //代码块 importM import 'package:flutter/material.dart'; void main() { runApp( MaterialApp(       theme ...

  7. grpc双向流究竟是什么情况?2段代码告诉你

    摘要:为什么需要grpc双向流? 本文分享自华为云社区<grpc双向流究竟是什么情况?2段代码告诉你>,作者:breakDawn. 为什么需要grpc双向流? 有时候请求调用和返回过程,并 ...

  8. 电商运营该如何做 AB 测试

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 近年,电商行业进入了一个新的发展阶段,一方面电商市场规模持续扩大,另一方面直播电商.即时零售.社区团购等新兴电商业 ...

  9. Selenium八大元素定位(元素定位,元素等待)

    Selenium WebDriver查找页面元素及元素操作 元素常用方法定位方法 通过id定位元素:find_element_by_id('id_value') 通过name定位元素:find_ele ...

  10. 一个非常轻量级的 Web API Demo

    一个非常轻量级的 Web API Demo,代码量很少,实现了方法拦截器,token校验,异常拦截器,缓存 创建项目:如果选择Web API,项目中东西会比较多,这里选择Empty,把下面的Web A ...