天天看點

mysql使用jemalloc來優化innodb緩沖池

jemalloc是一個malloc()碎片避免和可擴充的并發支援的實作。
它旨在用作系統提供的記憶體配置設定器,如FreeBSD的libc庫,以及連結到C / C ++應用程式。jemalloc提供了許多超出标準配置設定器功能的内省,記憶體管理和調優功能。作為一個極端的例子,arenas可以用作池配置設定器; 即arenas可用于通用配置設定,然後整個arenas作為單一操作被銷毀。
      

jemalloc首次配置設定小/大對象時,應用程式線程以循環方式配置設定給arenas。arenas完全互相獨立。他們維護自己的塊,從中為小/大對象雕刻頁面運作。無論哪個線程執行釋放,釋放的記憶體總是傳回到它所來自的arenas。

相關概念:

arena chunk:

虛拟記憶體被邏輯上分割成chunks

arenas:

malloc是統一來管理記憶體,就像一個池塘,所有記憶體就是一個池塘。而jemalloc是把這個池塘劃分為幾個小塊,為每個程序配置設定一個塊,各個塊之間互相獨立,這個塊就稱之為arenas。

Thread cache:

各個線程每一個都配置設定到一個arenas,使之完全互相獨立,互不幹擾。

arenas配置設定示例:

mysql使用jemalloc來優化innodb緩沖池
mysql使用jemalloc來優化innodb緩沖池

一、安裝:

下載下傳:wget https://github.com/jemalloc/jemalloc/releases/download/5.2.0/jemalloc-5.2.0.tar.bz2

解壓:tar -jxf jemalloc-5.2.0.tar.bz2

           cd jemalloc-5.2.0

編譯:./configure --prefix=/usr/local/jemalloc --libdir=/usr/lib

安裝:make && make install

加入:echo /usr/lib >> /etc/ld.so.conf

調用:ldconfig

二、mysql配置:

vim my.cnf:

[mysqld_safe]

malloc-lib=/usr/lib/libjemalloc.so

三、啟動mysql,檢視是否生效:

lsof -n|grep libjemalloc.so

繼續閱讀