Chinaunix首页 | 论坛 | 博客
  • 博客访问: 96797
  • 博文数量: 25
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 316
  • 用 户 组: 普通用户
  • 注册时间: 2012-08-02 00:39
文章分类

全部博文(25)

文章存档

2013年(25)

我的朋友

分类: Mysql/postgreSQL

2013-04-22 16:27:32

tcmalloc的算法优化了glibc的malloc等内存分配函数,通过预分配大内存然后分割来避免内存碎片,同时提高内存分配效率,使用场景为多线程,大内存操作

mysql使用tcmalloc可以提高线程池分配新线程,线程对内存的malloc和free,提高dml的效率(select 的影响不如dml明显,一方面有qcache的存在,另一方面dml作用于buffer,然后buffer根据lru算法flush更加频繁)

安装tcmalloc

1) 安装libunwind 0.99

CFLAGS=-fPIC ./configure
make CFLAGS=-fPIC
make CFLAGS=-fPIC install

2) 安装tcmalloc

./configure
make&&make install

3) 添加到LD_LIBRARY_PATH

#cd /etc/ld.so.conf.d/
#echo "/usr/local/lib">local_lib.conf
#ldconfig


5.5 之前的mysql调整/etc/init.d/mysql 或者mysqld_safe

添加 export LD_PRELOAD=/usr/lib/libtcmalloc.so /* 或者编译后的位置 */

5.5 还可以在my.cnf添加参数

[mysqld_safe]
malloc-lib=tcmalloc


启动mysql #lsof -n | grep -i tcmalloc 查看是否已加载



3) mysql使用tcmalloc和glibc malloc的性能对比

场景为500并发的 标准tpc-b 测试,结果为

使用前
    
Statistics for the Userload:
User Load TPS kBPS Avg. Response Time (sec) Avg. Transaction Time (sec) Total Executions Total Rows Total Errors
500 390.92 3.127 0.098 0.101 70255 70255 0


使用后

Statistics for the Userload:
User Load TPS kBPS Avg. Response Time (sec) Avg. Transaction Time (sec) Total Executions Total Rows Total Errors
500 462.76 3.702 0.163 0.168 83237 83237 0

tps从390->462,提高18%
阅读(1966) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~