用 icc ipo 编译 squid
其实就是要把 Makefile 里面的 ar 换成 xiar,这不是一个很难的事情,但是 squid 不知道用的什么版本的 autotools, 如果重新生成 Makefile 的话,会有很多乱七八糟的错误,而且还编译不过,因此最简单的办法是直接在 configure 之后,替换所有 ar 为 xiar 就好了
configure 参数我用的这个
CC=icc CXX=icc CFLAGS="-O3 -ipo -axKWP -funroll-loops -unroll256 -mcpu=pentium4 -mtune=pentium4 -march=pentium4 -fomit-frame-pointer -static-libcxa -cxxlib-icc -i-static -fno-exceptions -no-prec-div" ./configure –enable-epoll –prefix=/var/test/squid –enable-storeio="aufs,ufs,diskd" –with-aufs-threads=3 –with-pthreads –enable-removal-policies=heap,lru –disable-delay-pools –enable-underscores –disable-ident-lookups –enable-time-hack –enable-cache-digests –disable-forw-via-db
然后简单替换所有 Makefile 里面的 /usr/bin/ar 为 xiar , 这里本来应该用 AC_SUBST(AR) 的,但是重新生成 Makefile 有问题,又懒得看,sigh
find -name "Makefile" -exec sh -c "cat "{}"| sed -e ‘s/\/usr\/bin\/ar/xiar/g’ > "{}".tmp ; mv "{}".tmp "{} \;
然后就可以带 ipo 编译了
squid-2.5用的是automake2.13和autoconf1.5的,看它目录下面的bootstrap.sh文件.
也马上尝试用icc编译然后打一下性能看看:D
哦,回头找个有老版本 autotools 的机器来整整,这个 automake 2.13 和 autoconf 1.5 我怎么记得是 rh 7.3 上面的标配啊?ft
另,我改了一点编译参数,把 squid 全都静态 link 了,要不然 icc 的库分发起来比较烦。
good,继续跟进,你打了压力测试么?icc编译后效率能提高多少?
sed有–in-place参数的…
find . -type f -name Makefile|xargs sed –in-place -e ‘s/\/usr\/bin\/ar/\/usr\/bin\/xiar/’
我是土人,不会写 shell ,汗。。
你有什么比较好的用来打squid压力的工具么?ab 这东西也太土鳖了一点。