ICC静态编译Percona

1月 6th, 2011 | Posted by | Filed under 数据库

本文内容遵从CC版权协议, 可以随意转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明
网址: http://www.penglixun.com/tech/database/icc_static_compile_percona.html

经过我的测试ICC在浮点运算,线程库和数学函数上的优势非常明显,原生SSE2指令集支持、Intel自己编写的线程库和数学函数库,性能没得说。
我用同一份运算PI值的代码在ICC和GCC下编译,提升比例达20%,实际在数据库中比较同一条超级复杂的聚合SQL,ICC提升达34%

第一步:编译安装libunwind
wget http://download.savannah.gnu.org/releases/libunwind/libunwind-0.99.tar.gz
tar zxvf libunwind-0.99.tar.gz

CC=icc \
CXX=icpc \
LD=xild \
AR=xiar \
CFLAGS=”-O3 -no-prec-div -ip -xSSE2 -axSSE2″ \
CXXFLAGS=”${CFLAGS}” \
./configure && make && make install

第二布:编译安装tcmalloc
wget http://google-perftools.googlecode.com/files/google-perftools-1.6.tar.gz
tar zxvf google-perftools-1.6.tar.gz

CC=icc \
CXX=icpc \
LD=xild \
AR=xiar \
CFLAGS=”-O3 -no-prec-div -ip -xSSE2 -axSSE2″ \
CXXFLAGS=”${CFLAGS}” \
./configure –disable-debugalloc –enable-frame-pointers && make && make install

echo “/usr/local/lib” > /etc/ld.so.conf.d/usr_local_lib.conf
/sbin/ldconfig

第三部:编译安装Percona
CC=icc \
CXX=icpc \
LD=xild \
AR=xiar \
CFLAGS=”-O3 -unroll2 -ip -mp -restrict -fno-exceptions -fno-rtti -no-prec-div -fno-implicit-templates -static-intel -static-libgcc -xSSE2 -axSSE2″ \
CXXFLAGS=”${CFLAGS}” \
CPPFLAGS=” -I/usr/alibaba/icc/include ” \
LDFLAGS=” -L/usr/alibaba/icc/lib -lrt ” \
./configure –prefix=/usr/alibaba/install/percona-custom-5.1.53-12.4 \
–with-server-suffix=-alibaba-edition \
–with-mysqld-user=mysql \
–with-plugins=heap,innodb_plugin,myisam,partition \
–with-charset=utf8 \
–with-collation=utf8_general_ci \
–with-extra-charsets=gbk,utf8,ascii \
–with-big-tables \
–with-fast-mutexes \
–with-zlib-dir=bundled \
–with-readline \
–with-pthread \
–with-mysqld-ldflags=’-all-static -ltcmalloc’ \
–enable-assembler \
–enable-profiling \
–enable-local-infile \
–enable-thread-safe-client \
–without-embedded-server \
–with-client-ldflags=-all-static \
–with-mysqld-ldflags=-all-static \
–with-mysqld-ldflags=-ltcmalloc \
–without-query-cache \
–without-geometry \
–without-debug \
–without-ndb-binlog \
–without-ndb-debug
编译完成后make && make install

标签: , , ,
  1. 吉猫
    1月 7th, 201115:56

    tcmalloc 1.6 还是有内存泄漏问题

    [回复]

  2. netnova
    1月 20th, 201111:34

    牛人,有测试icc 用于mysql-5.5.8吗?

    [回复]

  3. charles
    1月 21st, 201115:47

    按照上述文档使用icc编译percona,生成mysql表时报错 请问怎样解决
    [root@localhost Percona-Server]# ./scripts/mysql_install_db –user=mysql
    Installing MySQL system tables…
    110121 15:44:41 [Note] Flashcache bypass: disabled
    110121 15:44:41 [Note] Flashcache setup error is : ioctl failed

    110121 15:44:41 – mysqld got signal 11 ;

    [回复]

  4. charles
    1月 21st, 201118:56

    博主你好 我根据你写的ICC静态编译Percona来进行编译安装percona
    在生成mysql系统表时报错 同样编译mysql5.5.8时也生成mysql系统表报错
    我的系统环境是esx里面的虚拟机 rhel5.3 64
    文件系统使用了xfs
    这个问题困扰我很久了 请帮忙解决一下 万分感谢
    我的QQ是181657684
    在这里先谢过了
    [root@localhost Percona-Server]# ./scripts/mysql_install_db –user=mysql
    Installing MySQL system tables…
    110121 15:44:41 [Note] Flashcache bypass: disabled
    110121 15:44:41 [Note] Flashcache setup error is : ioctl failed
    110121 15:44:41 – mysqld got signal 11 ;

    [回复]

    P.Linux 回复:

    你可以对比下GCC编译的结果,GCC能用ICC不能用才可能是编译的问题,GCC编译也不能用那就是版本的问题了

    [回复]

    charles 回复:

    @P.Linux,
    使用GCC编译能用
    我的icc参数为
    CC=icc CXX=icpc LD=xild AR=xiar CFLAGS=”-O3 -unroll2 -ip -mp -restrict -fno-exceptions -fno-rtti -no-prec-div -fno-implicit-templates -static-intel -static-libgcc -xSSE2 -axSSE2″ \
    CXXFLAGS=”${CFLAGS}” \
    CPPFLAGS=” -I/opt/intel/include ” \
    LDFLAGS=” -L/opt/intel/lib -lrt ” \

    使用的是intel icc2011的最新版本,不知道是哪个参数造成的问题,生成mysql表报错,老大帮忙看一下,公司主管催的紧,我的QQ:181657684

    [回复]

    P.Linux 回复:

    检查你的CPU是否支持SSE2指令集。然后只保留-O3和-static-intel -static-libgcc参数试试。

  5. 通通
    1月 25th, 201121:34

    CPPFLAGS=” -I/usr/alibaba/icc/include ”
    LDFLAGS=” -L/usr/alibaba/icc/lib -lrt ”

    这个alibaba头文件库是怎么回事? 是icc的?还是阿里巴巴的?

    [回复]

    P.Linux 回复:

    当然是ICC的,这是我们icc安装的目录而已

    [回复]