mysql性能测试(使用TCMalloc前后对比)

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


今天动手测试了一下TCMalloc对mysql的影响,以下是我测试的流水过程:
硬件:
CPU:Intel(R) Xeon(R) CPU 5110@1.60GHz(四核心)
MEMORY:4G

软件:
OS:CentOS release 5.3 (Final)
MySQL edition:5.5.12-log

测试工具: 

sysbench 

tpcc(暂缺)

 

mysql相关参数:

sync_binlog=1
transaction-isolation=READ-COMMITTED
innodb_buffer_pool_size = 2500M
innodb_thread_concurrency = 9
innodb_flush_log_at_trx_commit = 1
innodb_io_capacity = 400

 

为了避免块设备的IO瓶颈,数据基本上全部在内存中读取 。

 装载1kw条记录:

# sysbench --test = oltp --db-driver = mysql  --mysql-user = root --mysql-host = 127.0.0.1  --mysql-db = sbtest --mysql-socket = /tmp/mysql.sock --mysql-table-engine = innodb --oltp-table-size = 10000000  prepare

安装TCMalloc: 

# tar -zxvf google-perftools- 1.7 .tar.gz 
# cd google-perftools-
1.7  
# mkdir /tmp/tc 
# ./configure --prefix
= /tmp/tc --disable-cpu-profiler --disable-heap-profiler --disable-heap-checker --disable-debugalloc --enable-minimal 
# make && make install   --编译报错,说没有g++
# yum install gcc-c++ libstdc++-devel 
# cp /tmp/tc/lib/libtcmalloc_minimal.so
.0.1.0   /usr/local/lib
# ln -s /usr/local/lib/libtcmalloc_minimal.so
.0.1.0  /usr/local/lib/libtcmalloc.so
# ln -s /usr/local/lib/libtcmalloc_minimal.so
.0.1.0  /usr/local/lib/libtcmalloc.so .0  
# ln -s /usr/local/lib/libtcmalloc_minimal.so
.0.1.0  /usr/local/lib/libtcmalloc.so .0.1.0


"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 &
 
验证TCMalloc
使用lsof查看mysql进 程是否已经加载了tcmalloc库:"
#  lsof -n | grep tcmalloc

mysqld    10472     mysql  mem       REG              253,0      873557   15970541 /usr/local/lib/libtcmalloc_minimal.so.0.1.0 

 

sysbench运行语句:

# time sysbench --test = oltp --db-driver = mysql  --mysql-user = root --mysql-host = 127.0.0.1  --mysql-socket = /tmp/mysql.sock --mysql-table-engine = innodb --mysql-db = sbtest --num-threads = [ 1...64 ]  --max-requests = 10000   --oltp-read-only = on  --oltp-table-size = 10000000  run 

 

测试结果如下:

横轴为并发线程数

纵轴为每秒完成的事务量(只读) 

tcmalloc

从文档中得知,TCmalloc的从两个地方改善性能:

一是执行一次malloc/free的速度;

二是减少了多线程程序中的锁争用情况。对于小对象,几乎已经达到了零争用。对于大对象,TCMalloc尝试使用粒度较好和有效的自旋锁。


参考:

http://code.google.com/p/google-perftools/ 

http://my.oschina.net/captaintheron/blog/2797 

http://shiningray.cn/tcmalloc-thread-caching-malloc.html 

转载于:https://www.cnblogs.com/minglog/archive/2011/05/11/2043342.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值