今天在安装mariaDB的时候发现编译一直提示一个错误/usr/bin/ld: cannot find -ljemalloc_pic
后来发现是因为没有用这个jemalloc 可能是mariaDB数据库默认就使用这种方式管理多线程内存分配
一、首先这个jemalloc是什么
Redis 2.4版本之后,默认使用jemalloc来做内存管理;tengine也整合jemalloc。jemalloc从各方评测的结果可见与google tcmalloc都不相伯仲,皆为内存管理器领域最高水平。如下图:
<a href="http://s3.51cto.com/wyfs02/M02/58/1F/wKioL1Sp-U6gtsSMAAEliq1Q6bc263.jpg" target="_blank"></a>
最 左边的就是glibc的malloc,最右边的就是jemalloc。从图表上可以看出,jemalloc的性能有glibc的两倍以上。非常压倒性的性 能差异。因此,使用了jemalloc的应用程序自然会快很多。Jemalloc旁边的就是tcmalloc。Tcmalloc的性能与其相差甚微,低 jemalloc2.1.0慢4.5%。图上和tcmalloc的1.4版本,而现在已经到2.1版本,因此实际上这两者应该是不相仲伯的。 Jemalloc的创始人jason evans也意识到这一点,说在cpu core 8以上的计算机上jemalloc效率更高
二、使用
安装jemalloc
使用jemalloc优化MySQL
MySQL/MaridDB 5.5编译方法,cmake预编译时加上下面参数
或者直接加载,修改mysqld_safe
三、验证是否生效
lsof -n | grep jemalloc
本文转自 aklaus 51CTO博客,原文链接:http://blog.51cto.com/aklaus/1599202