[转帖]jemalloc 性能测试

jemalloc,性能,测试 · 浏览次数 : 0

小编点评

**安装** 1. 安装 MacOS1brew:`sudo brew install macports` 2. 安装jemalloc:`sudo gem install jemalloc-devel` **测试** **2.1. 源码** ```c++ #include #include #include #include #ifdef USE_JEMALLOC #include #endif#define MALLOC_CNT 10000000long long mstime() { long long mst; struct timeval tv; gettimeofday(&tv, NULL); mst = ((long long)tv.tv_sec) * 1000; mst += tv.tv_usec / 1000; return mst;} int main() { srand((unsigned)time(NULL)); long long begin = mstime(); for (int i = 0; i < MALLOC_CNT; i++) { int size = 1024 * 4 + rand() % 1024; char* p = (char*)malloc(size); memset(p, rand() % 128, size); free(p); } long long end = mstime(); std::cout << \"begin: \" << begin << std::endl << \"end: \" << end << std::endl << \"val: \" << end - begin << std::endl; return 0;} ``` **2.2. 测试结果** 测试中使用 `for` 循环循环分配和释放 10,000,000 个字节的内存。测试结果显示,jemalloc 内存分配性能比系统默认的分配器快 50%。 ``` begin: 1596078974122 end: 1596078975375 val: 1253 ``` **总结** 测试结果表明,jemalloc 内存分配性能比系统默认的分配器快 50%,并对 C++ 的 `new` 和 `delete` 操作的影响也进行了测试。

正文

https://wenfh2020.com/2020/07/30/jemalloc/

 

 

jemalloc 是一个优秀的内存分配器,通过与系统默认的内存分配器进行比较:jemalloc 内存分配性能比系统默认的分配器快 50%。


1. 安装

  • MacOS
1
brew install jemalloc
  • Centos
1
2
yum install jemalloc
yum install jemalloc-devel

2. 测试

2.1. 源码 (github 测试源码

测试 10,000,000 次,随机大小的内存块分配和回收,查看它们的工作效率。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <stdlib.h>
#include <string.h>
#include <sys/time.h>

#include <iostream>

#ifdef USE_JEMALLOC
#include <jemalloc/jemalloc.h>
#endif

#define MALLOC_CNT 10000000

long long mstime() {
    long long mst;
    struct timeval tv;
    gettimeofday(&tv, NULL);
    mst = ((long long)tv.tv_sec) * 1000;
    mst += tv.tv_usec / 1000;
    return mst;
}

int main() {
    srand((unsigned)time(NULL));
    long long begin = mstime();
    for (int i = 0; i < MALLOC_CNT; i++) {
        int size = 1024 * 4 + rand() % 1024;
        char* p = (char*)malloc(size);
        memset(p, rand() % 128, size);
        free(p);
    }
    long long end = mstime();

    std::cout << "begin: " << begin << std::endl
              << "end: " << end << std::endl
              << "val: " << end - begin << std::endl;
    return 0;
}

2.2. 测试结果

测试时间单位:微秒,jemalloc 内存管理耗时大约是系统默认内存管理的一半 (605 vs 1253)。demo 只是对 大于 4 * 1024 比较大块的内存进行测试,对于小内存的测试,jemalloc 表现还更加优秀。

有兴趣的朋友,也可以测试一下 jemalloc 对 C++ 的 new 和 delete 的影响。

1
2
3
4
5
6
7
8
9
10
11
# normal mem test.
$ g++ -std='c++11' -g test_jemalloc.cpp -o tjemalloc  && ./tjemalloc
begin: 1596078974122
end: 1596078975375
val: 1253

# jemalloc mem test.
$ g++ -std='c++11' -g test_jemalloc.cpp -o tjemalloc -DUSE_JEMALLOC -ljemalloc && ./tjemalloc
begin: 1596078980303
end: 1596078980908
val: 605

与[转帖]jemalloc 性能测试相似的内容:

[转帖]jemalloc 性能测试

https://wenfh2020.com/2020/07/30/jemalloc/ jemalloc 是一个优秀的内存分配器,通过与系统默认的内存分配器进行比较:jemalloc 内存分配性能比系统默认的分配器快 50%。 1. 安装 2. 测试 2.1. 源码 (github 测试源码) 2.2

[转帖]浅谈redis采用不同内存分配器tcmalloc和jemalloc

http://www.kaotop.com/it/173669.html 我们知道Redis并没有自己实现内存池,没有在标准的系统内存分配器上再加上自己的东西。所以系统内存分配器的性能及碎片率会对Redis造成一些性能上的影响。 在Redis的 zmalloc.c 源码中,我们可以看到如下代码: ?

[转帖]Jemalloc及内存泄漏分析

https://zhuanlan.zhihu.com/p/138886684 不同层面的内存使用 Operating System 当程序在执行的时候, 可以通过ps, top等系统命令来预先发现内存泄漏的进程, 比如我们关注的是mysqld, 可以使用如下脚本来监控它的内存使用量. 这样能定位到可

[转帖]jemalloc内存分配算法

https://www.cnblogs.com/xiaojiesir/p/15450732.html jemalloc内存分配算法简介 jemalloc 是由 Jason Evans 在 FreeBSD 项目中引入的新一代内存分配器。它是一个通用的 malloc 实现,侧重于减少内存碎片和提升高并发

[转帖]【技术剖析】11. 使用jemalloc解决JVM内存泄露问题

https://bbs.huaweicloud.com/forum/thread-169523-1-1.html 作者:王坤 > 编者按:JVM 发生内存泄漏,如何能快速定位到内存泄漏点并不容易。笔者通过使用 jemalloc(可以替换默认的 glibc 库)中的 profiling 机制(通过对程

[转帖]ARM64 CentOS系统下MySQL使用jemalloc时的问题和解决方法

https://aijishu.com/a/1060000000321521 本文主要介绍在ARM64 CentOS系统下,MySQL使用jemalloc作为内存管理器时,内存占用问题的分析过程和解决方法。 Jemalloc 简介 Jemalloc是由Jason Evans在FreeBSD项目中引入

[转帖]

Linux ubuntu20.04 网络配置(图文教程) 因为我是刚装好的最小系统,所以很多东西都没有,在开始配置之前需要做下准备 环境准备 系统:ubuntu20.04网卡:双网卡 网卡一:供连接互联网使用网卡二:供连接内网使用(看情况,如果一张网卡足够,没必要做第二张网卡) 工具: net-to

[转帖]

https://cloud.tencent.com/developer/article/2168105?areaSource=104001.13&traceId=zcVNsKTUApF9rNJSkcCbB 前言 Redis作为高性能的内存数据库,在大数据量的情况下也会遇到性能瓶颈,日常开发中只有时刻

[转帖]ISV 、OSV、 SIG 概念

ISV 、OSV、 SIG 概念 2022-10-14 12:29530原创大杂烩 本文链接:https://www.cndba.cn/dave/article/108699 1. ISV: Independent Software Vendors “独立软件开发商”,特指专门从事软件的开发、生产、

[转帖]Redis 7 参数 修改 说明

2022-06-16 14:491800原创Redis 本文链接:https://www.cndba.cn/dave/article/108066 在之前的博客我们介绍了Redis 7 的安装和配置,如下: Linux 7.8 平台 Redis 7 安装并配置开机自启动 操作手册https://ww