一般情况下,用户选择安装方式为rpm包或者二进制压缩包,但是,通用安装包为了适应不同的软硬件平台,都会采用保守的源码编译方式,并使用特定的gcc参数可以使编译出的程序执行效率有较大提升。 gcc优化参数都是通过export命令设定CFLAGS和CXXFLAGS,然后configure的时候会自动读入,make的时候会自动使用所选的优化参数。通过添加优化参数,让程序针对某个CPU型号和某个系统进行最大优化,减少文件大小、CPU使用率、内存使用率。优化后的程序,将不再具有跨系统跨平台的能力。 Alibaba大牛P.Linux通过调整gcc的编译参数,使MySQL 5.1.46sp1企业版,比Percona 5.1.47 Server性能高出15%,并非常稳定的运行在开发测试库上。 gcc CPU参数优化已经作为可选项添加到《lnmp最新源码一键安装包》 首先查看CPU信息,然后根据CPU信息到《Intel型号CPU的CFlags设置》、《AMD型号CPU的CFlags设置》去获取CPU优化参数。 # cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 45 model name : Intel(R) Xeon(R) CPU E5-2670 0 @ 2.60GHz stepping : 7 microcode : 0x70d cpu MHz : 2600.038 cache size : 20480 KB physical id : 0 siblings : 8 core id : 0 cpu cores : 1 apicid : 0 initial apicid : 0 fpu : yes fpu_exception : yes cpuid level : 13 wp : yes flags : fpu de tsc msr pae cx8 sep cmov pat clflush mmx fxsr sse sse2 ss ht syscall nx lm constant_tsc rep_good nopl nonstop_tsc pni pclmulqdq ssse3 cx16 sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes hypervisor lahf_lm ida arat epb pln pts dtherm bogomips : 5200.07 clflush size : 64 cache_alignment : 64 address sizes : 46 bits physical, 48 bits virtual power management: 从cupinfo的信息可以看出,支持sse/sse2/mmx这些GCC的flag,查看gcc参数优化选项参考文档:[英文、中文]。 export CHOST="x86_64-pc-linux-gnu" export CFLAGS="-march=nocona -O3 -pipe -fomit-frame-pointer" export CXXFLAGS="${CFLAGS}" 注意:gcc-4.2以上版本支持 -march=native 参数,gcc会自动选择最适合cpu的优化 -march=native 让它自己判断,是否支持native用下面的命令看看结果是否正常,和文档获取的参数不大相同 # touch o.c;gcc -v -march=native o.c 2>&1 | grep -o -- "-march[^ ]*" && rm -rf o.c -march=core2
Fri Sep 27 21:32:52 CST 2013
|
|