優化的內存訪問 TCMalloc

TCMallocThread-Caching Malloc)是google-perftools工具中的一個,與標準的glibc庫的malloc相 比,TCMalloc在內存的分配上效率和速度要高得多,能夠提升Mysql服 務器在高併發狀況下的性能,下降系統負載。html

 

Google-perftools的項目:http://code.google.com/p/google-perftools/mysql

google-perftools 包括 TCMalloc heap-checker heap-profiler cpu-profiler 4 個組件,在只 用 TCMalloc 的場景下,能夠不編譯其餘三個組件,使用tcmalloc_minimal 就足夠。
下面介紹在Linux SUSE x86 上安裝 TCMalloc 動態庫的過程。
 
安裝 TCMalloc
http://code.google.com/p/google-perftools/ 下載源碼包,如今最新版本是1.4 。若是機器聯網,直接:
wget  http://google-perftools.googlecode.com/files/google-perftools-1.4.tar.gz
tar zxvf google-perftools-1.4.tar.gz
cd  google-perftools-1.4
Mysql 服 務器只須要用SO 動態庫就能夠了,沒有必需要把其餘的文件( 頭文件靜態庫文檔等) 也安裝到/usr/local/ 裏。先安裝到一個臨時文件夾:
mkdir /tmp/tc
./configure --prefix=/tmp/tc --disable-cpu-profiler --disable-heap-profiler --disable-heap-checker --disable-debugalloc --enable-minimal
加上後面的幾個參數是指只生成tcmalloc_minimal
若是要生成包含全部組件的 tcmalloc ,可:
./configure --prefix=/tmp/tc
若是要將文件直接安裝到文件,就不須要臨時目錄了,可:
./configure
使用./configure –h 可查看安裝選項。
編譯安裝:
make && make install
ls -alt /tmp/tc/lib/*
使用了最小安裝,拷貝tcmalloc_minimal 的動態庫到系統庫目錄:
cp /tmp/tc/lib/ libtcmalloc_minimal.so.0.0.0 /usr/local/lib
創建軟鏈接指向 tcmalloc
ln -s /usr/local/lib/libtcmalloc_minimal.so.0.0.0 /usr/local/lib/libtcmalloc.so
ln -s /usr/local/lib/libtcmalloc_minimal.so.0.0.0 /usr/local/lib/libtcmalloc.so.0
ln -s /usr/local/lib/libtcmalloc_minimal.so.0.0.0 /usr/local/lib/libtcmalloc.so.0.0.0
rm -rf /tmp/tc
 
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 &
 
驗證
使用lsof 查看 mysql 進 程是否已經加載了 tcmalloc 庫:
shell > lsof -n | grep tcmalloc
mysqld    32398      mysql mem       REG        8,3     668454    1477703 /usr/local/lib/libtcmalloc_minimal.so.0.0.0
恭喜,成功安裝了 tcmalloc
相關文章
相關標籤/搜索