今天在安裝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