技术文档

调整gcc CPU参数优化代码编译

一般情况下,用户选择安装方式为rpm包或者二进制压缩包,但是,通用安装包为了适应不同的软硬件平台,都会采用保守的源码编译方式,并使用特定的gcc参数可以使编译出的程序执行效率有较大提升。

调整gcc CPU参数优化代码编译

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优化参数。

  1. #cat/proc/cpuinfo

  2. processor:0

  3. vendor_id:GenuineIntel

  4. cpufamily:6

  5. model:45

  6. modelname:Intel(R)Xeon(R)CPUE5-26700@2.60GHz

  7. stepping:7

  8. microcode:0x70d

  9. cpuMHz:2600.038

  10. cachesize:20480KB

  11. physicalid:0

  12. siblings:8

  13. coreid:0

  14. cpucores:1

  15. apicid:0

  16. initialapicid:0

  17. fpu:yes

  18. fpu_exception:yes

  19. cpuidlevel:13

  20. wp:yes

  21. flags:fpudetscmsrpaecx8sepcmovpatclflushmmxfxsrssesse2sshtsyscallnxlmconstant_tscrep_goodnoplnonstop_tscpnipclmulqdqssse3cx16sse4_1sse4_2x2apicpopcnttsc_deadline_timeraeshypervisorlahf_lmidaaratepbplnptsdtherm

  22. bogomips:5200.07

  23. clflushsize:64

  24. cache_alignment:64

  25. addresssizes:46bitsphysical,48bitsvirtual

  26. powermanagement:

从cupinfo的信息可以看出,支持sse/sse2/mmx这些GCC的flag,

查看gcc参数优化选项参考文档:[英文、中文]。

我这里的操作系统是64位,在编译源码之前执行如下代码即可调整gcc参数

  1. exportCHOST=“x86_64-pc-linux-gnu”
  2. exportCFLAGS=“-march=nocona-O3-pipe-fomit-frame-pointer”
  3. exportCXXFLAGS=“${CFLAGS}”

注意:gcc-4.2以上版本支持 -march=native 参数,gcc会自动选择最适合cpu的优化

-march=native 让它自己判断,是否支持native用下面的命令看看结果是否正常,和文档获取的参数不大相同

  1. #toucho.c;gcc-v-march=nativeo.c2>&1|grep-o--"-march[^]*"&&rm-rfo.c

  2. -march=core2

©2020-2024   万云SSL证书  (www.sslssl.com.cn)  万云科技   豫ICP备2020034358号-10