---
title: 关闭透明大页和使用TCMalloc
description: "TCMalloc是一种高效的内存分配器，它通过一系列优化来提高内存分配的效率和性能。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengdbs/systuningguide/tngg/kunpengdbs_tuningguide_05_0016.html
sourcePath: /source/zh/kunpengdbs/systuningguide/tngg/kunpengdbs_tuningguide_05_0016.html
indexId: 27fd87f67de8d562d6e3b1df680ff2a34af87ae134912df282139fecbb22e7fc77
---
# 关闭透明大页和使用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版本号。

  1. 下载    gperftools源码(https://github.com/gperftools/gperftools/releases)
。
  2. 解压gperftools源码。
    1 tar -zxvf gperftools-xx.tar.gz

  3. 进入gperftools源码目录，并执行编译安装。
    1 2 3 4 cd gperftools-xx ./configure --enable-frame-pointers make -j make install

  4. 修改MariaDB启动脚本mysqld_safe文件。“/usr/local/mysql/bin/mysqld_safe”表示mysqld_safe文件的目录，请根据MariaDB实际的安装位置修改。

    a. 打开mysqld_safe文件。
      1 vim /usr/local/mysql/bin/mysqld_safe

    b. 按“i”进入编辑模式，在“#executing mysqld_safe”的下一行添加如下内容。
      1 export LD_PRELOAD=/usr/local/lib/libtcmalloc.so

    c. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
    d. 重启MariaDB服务使mysqld_safe文件的修改生效。
