ICC静态编译Percona
本文内容遵从CC版权协议, 可以随意转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明网址: http://www.penglixun.com/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
tcmalloc 1.6 还是有内存泄漏问题
[回复]
牛人,有测试icc 用于mysql-5.5.8吗?
[回复]
按照上述文档使用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 ;
[回复]
博主你好 我根据你写的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 回复:
21 1 月, 2011 at 21:47
你可以对比下GCC编译的结果,GCC能用ICC不能用才可能是编译的问题,GCC编译也不能用那就是版本的问题了
[回复]
charles 回复:
24 1 月, 2011 at 11:38
@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 回复:
24 1 月, 2011 at 13:07
检查你的CPU是否支持SSE2指令集。然后只保留-O3和-static-intel -static-libgcc参数试试。
CPPFLAGS=” -I/usr/alibaba/icc/include ”
LDFLAGS=” -L/usr/alibaba/icc/lib -lrt ”
这个alibaba头文件库是怎么回事? 是icc的?还是阿里巴巴的?
[回复]
P.Linux 回复:
26 1 月, 2011 at 10:28
当然是ICC的,这是我们icc安装的目录而已
[回复]