用ICC编译AMP — Mysql

May 13th, 2006

« 汉芯终结了!   |    想不到 http://www.robinzhong.com 的访问量竟然比我的blog还高? »

在前文中,我提到了icc的好. 不过,说归说,没有实现体验过,还真不知道它到底怎么样.
前一段时间自己试验了一下,用icc编译了amp.然后上面跑vbb论坛.发现性能有比较大的提升.而且一直很稳定,没有出过问题.

现在在这里记下来:

第一步,先编译mysql.

为什么是mysql呢? 因为,它的编译参数比较麻烦(不能使用ipo),而且它的编译成功/失败和后面两个没有直接的关系...再说了,我就喜欢先编译它 :)

1. 下载mysql的源代码:

CODE:
  1.     wget http://dev.mysql.com/get/Downloads/MySQL-5.0/mysql-5.0.20.tar.gz/from/http://mysql.he.net/
  2.     tar -xzf mysql-5.0.20.tar.gz
  3.     cd mysql-5.0.20 

2. 使用configure脚本来配置编译参数:

CODE:
  1. CC=icc \
  2. CXX=icpc \
  3. CFLAGS="-O3 -ip -cxxlib-icc -i-static -no-gcc  -mp -restrics " \
  4. CXXFLAGS="-O3 -ip -cxxlib-icc -i-static -no-gcc  -mp -restrics" \
  5. CPPFLAGS="-O3 -ip -cxxlib-icc -i-static -no-gcc  -mp -restrics" \
  6. LD=xild \
  7. AR=xiar \
  8. LDFLAGS="-cxxlib-icc -i-static" \
  9. CXXLDFLAGS="-cxxlib-icc -i-static" \
  10. ./configure \
  11. --prefix=/home/ext/usr/local/mysql \
  12. --sysconfdir=/home/ext/etc \
  13. --libexecdir=/home/ext/usr/local/mysql/bin \
  14. --enable-assembler \
  15. --with-mysqld-ldflags=-all-static \
  16. --without-debug \
  17. --with-charset=utf8 \
  18. --with-extra-charset=all \
  19. --with-zlib-dir=/usr \
  20. --with-big-tables \ 

注意: icc提供了一个重要的功能就是 ipo ,可以把大多数的函数内链化 (inline).通常情况下面可以提升程序的性能,不过带来的问题就是编译后的binary要大一些 ( 不过现在硬盘这么大,谁在乎啊).不过mysql不能使用这个参数,可能会导致一些问题(不过你可以自己试试). 还有就是 -no-gcc 选项, 这个一定要带上,否则编译会出错(我也不知道为什么)...

3. 然后呢,就是make了和install了.

CODE:
  1. make
  2. make install
  3.  

嗯.这个就是我编译的步骤了,我自己试,是成功的.不过我不敢打包票.如果出错了,尝试去掉一些icc的编译参数再重新编译.

Bookmark on del.icio.us

,

2 CommentsAdd your own

#1 gtr → http://www.routerclub.com

有试过编译php吗?我编译php5.16后,php 不能加载eacc和zend模块,不知道怎么办?

#2 uingei

可能是你用了worker-mpm

Add a New Comment

Comment Guidelines: Basic XHTML is allowed (a href, strong, em, code). Line breaks and paragraphs are automatically generated. Off-topic or inappropriate comments will be edited or deleted. Email addresses will never be published. Thanks.

Subscribe without commenting

Related Posts.

  • 在Debian AMD64/EM64T上面安装Intel C++ Compiler 9.0
  • How to move datadir of mysql!
  • 遭遇MySQL之#1030 - Got error 28 from table handler错误!
  • php: mysql_fetch_array vs mysql_fetch_object.
  • Widgets

    technorati
    Technorati
    Blogs that link here
    Creative Commons License
    This work is licensed under a Creative Commons Attribution-ShareAlike 2.5 License.