优化的内存访问 TCMalloc

喜你入骨 提交于 2019-12-04 02:16:46

TCMallocThread-Caching Malloc)是google-perftools工具中的一个,与标准的glibc库的malloc相 比,TCMalloc在内存的分配上效率和速度要高得多,可以提高Mysql服 务器在高并发情况下的性能,降低系统负载。

 

Google-perftools的项目:http://code.google.com/p/google-perftools/

google-perftools 包括 TCMalloc heap-checker heap-profiler cpu-profiler 4 个组件,在只 用 TCMalloc 的场景下,可以不编译其他三个组件,使用tcmalloc_minimal 就足够。
下面介绍在Linux SUSE x86 上安装 TCMalloc 动态库的过程。
 
安装 TCMalloc
http://code.google.com/p/google-perftools/ 下载源码包,现在最新版本是1.4 。如果机器联网,直接:
wget  http://google-perftools.googlecode.com/files/google-perftools-1.4.tar.gz
tar zxvf google-perftools-1.4.tar.gz
cd  google-perftools-1.4
Mysql 服 务器只需要用SO 动态库就可以了,没有必须要把其他的文件( 头文件静态库文档等) 也安装到/usr/local/ 里。先安装到一个临时文件夹:
mkdir /tmp/tc
./configure --prefix=/tmp/tc --disable-cpu-profiler --disable-heap-profiler --disable-heap-checker --disable-debugalloc --enable-minimal
加上后面的几个参数是指只生成tcmalloc_minimal
如果要生成包含所有组件的 tcmalloc ,可:
./configure --prefix=/tmp/tc
如果要将文件直接安装到文件,就不需要临时目录了,可:
./configure
使用./configure –h 可查看安装选项。
编译安装:
make && make install
ls -alt /tmp/tc/lib/*
使用了最小安装,拷贝tcmalloc_minimal 的动态库到系统库目录:
cp /tmp/tc/lib/ libtcmalloc_minimal.so.0.0.0 /usr/local/lib
建立软连接指向 tcmalloc
ln -s /usr/local/lib/libtcmalloc_minimal.so.0.0.0 /usr/local/lib/libtcmalloc.so
ln -s /usr/local/lib/libtcmalloc_minimal.so.0.0.0 /usr/local/lib/libtcmalloc.so.0
ln -s /usr/local/lib/libtcmalloc_minimal.so.0.0.0 /usr/local/lib/libtcmalloc.so.0.0.0
rm -rf /tmp/tc
 
Mysql 加入动态库
修改 mysql 服 务的启动脚本mysqld_safe ,在“ # executing mysqld_safe ”行后添加行:
export LD_PRELOAD="/usr/local/lib/libtcmalloc.so"
目的是在启动 mysql 前, 加载 tcmalloc 动态库。
重启 Mysql 服 务:
/usr/local/mysql/bin/mysqladmin shutdown
/usr/local/mysql/bin/mysqld_safe –user=mysql &
 
验证
使用lsof 查看 mysql 进 程是否已经加载了 tcmalloc 库:
shell > lsof -n | grep tcmalloc
mysqld    32398      mysql mem       REG        8,3     668454    1477703 /usr/local/lib/libtcmalloc_minimal.so.0.0.0
恭喜,成功安装了 tcmalloc
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!