mysql使用jemalloc来优化innodb缓冲池

博客介绍了jemalloc首次分配小/大对象时,应用程序线程循环分配给相互独立的arenas,释放的内存返回到原arenas。还解释了arena chunk、arenas、Thread cache等相关概念,给出了jemalloc的安装步骤,以及mysql配置和启动查看是否生效的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

jemalloc是一个malloc()碎片避免和可扩展的并发支持的实现。
它旨在用作系统提供的内存分配器,如FreeBSD的libc库,以及链接到C / C ++应用程序。jemalloc提供了许多超出标准分配器功能的内省,内存管理和调优功能。作为一个极端的例子,arenas可以用作池分配器; 即arenas可用于通用分配,然后整个arenas作为单一操作被销毁。

jemalloc首次分配小/大对象时,应用程序线程以循环方式分配给arenas。arenas完全相互独立。他们维护自己的块,从中为小/大对象雕刻页面运行。无论哪个线程执行释放,释放的内存总是返回到它所来自的arenas。

相关概念:

arena chunk:

虚拟内存被逻辑上分割成chunks

arenas:

malloc是统一来管理内存,就像一个池塘,所有内存就是一个池塘。而jemalloc是把这个池塘划分为几个小块,为每个进程分配一个块,各个块之间相互独立,这个块就称之为arenas。

Thread cache:

各个线程每一个都分配到一个arenas,使之完全相互独立,互不干扰。

 

arenas分配示例:

ç«æåºå¤§åå¸å±

ç«æåºå线ç¨ç¼å­å¸å±

一、安装:

下载:wget https://github.com/jemalloc/jemalloc/releases/download/5.2.0/jemalloc-5.2.0.tar.bz2

解压:tar -jxf jemalloc-5.2.0.tar.bz2
           cd jemalloc-5.2.0
编译:./configure --prefix=/usr/local/jemalloc --libdir=/usr/lib
安装:make && make install
加入:echo /usr/lib >> /etc/ld.so.conf
调用:ldconfig

二、mysql配置:

vim my.cnf:

[mysqld_safe]
malloc-lib=/usr/lib/libjemalloc.so

三、启动mysql,查看是否生效:

lsof -n|grep libjemalloc.so

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值