关闭透明大页和使用TCMalloc
目的
TCMalloc是一种高效的内存分配器,它通过一系列优化来提高内存分配的效率和性能。
- 传统的malloc在分配和释放内存时会造成内存碎片,这会导致内存的利用率下降,甚至会导致内存不足的情况。而TCMalloc通过使用固定大小的page和对象来执行内存获取和分配操作,可以减少内存碎片的产生,提高内存的利用率。
- TCMalloc适用于多核,具有更好的并行性支持。它可以基于每个线程或者每个CPU设置缓存大小,提高并行性能。
- TCMalloc通过缓存常用对象来提高获取内存的速度。
- TCMalloc可以基于每个线程独立设置缓存分配策略,从而减少多线程之间锁的竞争,进一步优化内存分配的效率和性能。
方法
- 关闭透明大页
1 2
echo never > /sys/kernel/mm/transparent_hugepage/enabled echo never > /sys/kernel/mm/transparent_hugepage/defrag
- 使用TCMalloc
下面以MariaDB为例描述TCMalloc的使用方法。以下命令中,请根据实际情况将gperftools-xx修改为具体的gperftools版本号。
- 下载gperftools源码。
- 解压gperftools源码。
1
tar -zxvf gperftools-xx.tar.gz
- 进入gperftools源码目录,并执行编译安装。
1 2 3 4
cd gperftools-xx ./configure --enable-frame-pointers make -j make install
- 修改MariaDB启动脚本mysqld_safe文件。“/usr/local/mysql/bin/mysqld_safe”表示mysqld_safe文件的目录,请根据MariaDB实际的安装位置修改。
- 打开mysqld_safe文件。
1
vim /usr/local/mysql/bin/mysqld_safe
- 按“i”进入编辑模式,在“#executing mysqld_safe”的下一行添加如下内容。
1
export LD_PRELOAD=/usr/local/lib/libtcmalloc.so
- 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
- 重启MariaDB服务使mysqld_safe文件的修改生效。
- 打开mysqld_safe文件。
父主题: 操作系统调优