Xeon 55xx是Intel最新的Nehalem架构处理器,为了充分挖掘它的处理能力,我们做了很多的测试来尝试一些GCC的编译参数,如何获得更高的MySQL性能。

首先看处理器支持哪些flags:

processor : 15 vendor_id : GenuineIntel cpu family : 6 model : 26 model name : Intel(R) Xeon(R) CPU E5520 @ 2.27GHz stepping : 5 cpu MHz : 2261.088 cache size : 8192 KB physical id : 0 siblings : 8 core id : 3 cpu cores : 4 apicid : 7 fpu : yes fpu_exception : yes cpuid level : 11 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx rdtscp lm constant_tsc ida pni monitor ds_cpl vmx est tm2 cx16 xtpr popcnt lahf_lm bogomips : 4521.98 clflush size : 64 cache_alignment : 64 address sizes : 40 bits physical, 48 bits virtual power management:

从cupinfo的信息可以看出,支持sse/sse2/mmx这些GCC的flag,查看gcc的文档可以看到全部的优化选项:[点我查看]。

经过尝试,得到了如下编译参数,经过两周的压力测试,编译MySQL 5.1.46sp1企业版,比Percona 5.1.47 Server性能高出15%,目前也非常稳定的运行在开发测试库上。GCC版本为4.1.3,系统为RHEL 5.4 x64.

CXX=gcc \ CHOST=”x86_64-pc-linux-gnu” \ CFLAGS=” -O3 \ -fomit-frame-pointer \ -pipe \ -march=nocona \ -mfpmath=sse \ -m128bit-long-double \ -mmmx \ -msse \ -msse2 \ -maccumulate-outgoing-args \ -m64 \ -ftree-loop-linear \ -fprefetch-loop-arrays \ -freg-struct-return \ -fgcse-sm \ -fgcse-las \ -frename-registers \ -fforce-addr \ -fivopts \ -ftree-vectorize \ -ftracer \ -frename-registers \ -minline-all-stringops \ -fbranch-target-load-optimize2″ \ CXXFLAGS=”${CFLAGS}” \ ./configure –prefix=/usr/alibaba/install/mysql-ent-official-5.1.56 \ –with-server-suffix=alibaba-mysql \ –with-mysqld-user=mysql \ –with-plugins=partition,blackhole,csv,heap,innobase,myisam,myisammrg \ –with-charset=utf8 \ –with-collation=utf8_general_ci \ –with-extra-charsets=gbk,gb2312,utf8,ascii \ –with-big-tables \ –with-fast-mutexes \ –with-zlib-dir=bundled \ –enable-assembler \ –enable-profiling \ –enable-local-infile \ –enable-thread-safe-client \ –with-readline \ –with-pthread \ –with-embedded-server \ –with-client-ldflags=-all-static \ –with-mysqld-ldflags=-all-static \ –without-query-cache \ –without-geometry \ –without-debug \ –without-ndb-debug

GCC参数的含义为: -fomit-frame-pointer 对于不需要栈指针的函数就不在寄存器中保存指针,因此可以忽略存储和检索地址的代码,同时对许多函数提供一个额外的寄存器。所有”-O”级别都打开它,但仅在调试器可以不依靠栈指针运行时才有效。在AMD64平台上此选项默认打开,但是在x86平台上则默认关闭。建议显式的设置它。 -pipe 在编译过程的不同阶段之间使用管道而非临时文件进行通信,可以加快编译速度。建议使用。 -march=nocona Xoen 55xx处理器在GCC 4.1.3 -mfpmath=sse 启用cpu支持”sse”标量浮点指令。 m128bit-long-double 指定long double为128位,pentium以上的cpu更喜欢这种标准,并且符合x86-64的ABI标准,但是却不附合i386的ABI标准。 -mmmx -msse -msse2 使用相应的扩展指令集以及内置函数 -maccumulate-outgoing-args 指定在函数引导段中计算输出参数所需最大空间,这在大部分现代cpu中是较快的方法;缺点是会明显增加二进制文件尺寸。 -m64 生成专门运行于64位环境的代码,不能运行于32位环境,仅用于x86_64[含EMT64]环境。 -ftree-loop-linear 在trees上进行线型循环转换。它能够改进缓冲性能并且允许进行更进一步的循环优化。 -fprefetch-loop-arrays 生成数组预读取指令,对于使用巨大数组的程序可以加快代码执行速度,适合数据库相关的大型软件等。具体效果如何取决于代码。 -freg-struct-return 如果struct和union足够小就通过寄存器返回,这将提高较小结构的效率。如果不够小,无法容纳在一个寄存器中,将使用内存返回。建议仅在完全使用GCC编译的系统上才使用。 -fgcse-sm 在全局公共子表达式消除之后运行存储移动,以试图将存储移出循环。 -fgcse-las 在全局公共子表达式消除之后消除多余的在存储到同一存储区域之后的加载操作。 -frename-registers \ -fforce-addr 必须将地址复制到寄存器中才能对他们进行运算。由于所需地址通常在前面已经加载到寄存器中了,所以这个选项可以改进代码。 -fivopts 在trees上执行归纳变量优化。 -ftree-vectorize 在trees上执行循环向量化。 -ftracer 执行尾部复制以扩大超级块的尺寸,它简化了函数控制流,从而允许其它的优化措施做的更好。 -frename-registers 试图驱除代码中的假依赖关系,这个选项对具有大量寄存器的机器很有效。 -minline-all-stringops 默认时GCC只将确定目的地会被对齐在至少4字节边界的字符串操作内联进程序代码。该选项启用更多的内联并且增加二进制文件的体积,但是可以提升依赖于高速 memcpy, strlen, memset 操作的程序的性能。数据库系统使用这个参数可以显著提高内存操作性能。 -fbranch-target-load-optimize2 在执行序启动以及结尾之前执行分支目标缓存器加载最佳化。

mysql 编译cpu数量_适合MySQL的Xeon 55XX系列CPU编译参数相关推荐

  1. mysql 编译cpu数量_合适MySQL的Xeon 55XX系列CPU编译参数

    适合mysql的Xeon 55XX系列CPU编译参数 本文内容遵从CC版权协议, 可以随意转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明 网址: http://www.penglixu ...

  2. linux mysql编译参数,适合MySQL的Xeon 55XX系列CPU编译参数

    本文内容遵从CC版权协议, 可以随意转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明网址: http://www.penglixun.com/tech/database/xeon_55x ...

  3. mysql chown_请教,mysql编译时出错,chown: “mysql”: 无效的用 户

    你的位置: 问答吧 -> 服务器 -> 问题详情 请教,mysql编译时出错,chown: "mysql": 无效的用 户 chown: "mysql&quo ...

  4. mysql 多线程并行复制_【MySQL】开启并行复制

    [MySQL]开启并行复制 一.介绍 在官方的 5.6 版本之前,MySQL 只支持单线程复制,由此在主库并发高.TPS 高时就会出现严重的主备延迟问题. 如果备库执行日志的速度持续低于主库生成日志的 ...

  5. mysql 5.6参数_初识 MySQL 5.6 新功能、参数

    摘要: MySQL5.6 针对 MySQL5.5 各个方面又提升了很多,特别在性能和一些新参数上面,现在看看大致提升了哪些方面(后续不定时更新). 一:性能.功能上的提升. ① 在线DDL即 onli ...

  6. mysql 查询存储过程 速度_查询mysql过程

    MySql 使用explain分析查询 今天写了个慢到哭的查询,想用explain分析下执行计划,后来发现explain也是有局限性的: EXPLAIN不会告诉你关于触发器.存储过程的信息或用户自定义 ...

  7. mysql数据库服务器重启_重启mysql数据库服务器

    Mysql错误代码大全 1016错误:文件无法打开,使用后台修复或者使用phpmyadmin进行修复. 1044错误:数据库用户权限不足,请联系空间商解决 1045错误:数据库服务器/数据库用户名/数 ...

  8. mysql主从数据库含义_(转)Mysql数据库主从心得整理

    管理mysql主从有2年多了,管理过200多组mysql主从,几乎涉及到各个版本的主从,本博文属于总结性的,有一部分是摘自网络,大部分是根据自己管理的心得和经验所写,整理了一下,分享给各位同行,希望对 ...

  9. mysql报196271错误_超过mysql最大连接的异常

    超过mysql最大连接的错误 出现错误: com.mysql.jdbc.CommunicationsException: The driver was unable to create a conne ...

最新文章

  1. 三极管在ad中的原理图库_555时基电路内部结构及其工作原理
  2. linux 设置登录失败n次 锁定账户 /etc/pam.d/system-auth
  3. python rpc微服务框架_grpc的微服务探索实践
  4. 我们常常意识不到问题的存在,直到有人解决了这些问题
  5. 学习笔记(21):Python网络编程并发编程-队列的使用
  6. linux系统lsmod命令,linux lsmod命令 及相关信息
  7. Confluence 6 配置服务器基础地址备注
  8. oracle 游标 904,如何解决Oracle数据库游标连接超出问题
  9. dabeicun 2013源码下载
  10. 限制进程使用的内存大小和CPU时间
  11. 使用github安装vue-devtools
  12. 华为 linux文件系统,华为EROFS文件系统是什么
  13. ipscan(ip端口扫描工具) 2.21 中文绿色版 局域网ip端口扫描神器
  14. gst-launch-1.0
  15. ARM Cortex-M3/M4内核相关
  16. redis unlink
  17. net域名和com域名在属性和价值上有什么不同?
  18. 小区门禁系统代码C语言,一套完整的门禁系统(原理图+源程序),包括电源充电...
  19. 音频播放器—打开音频设备(扬声器)
  20. 警告 Invalid cookie header: Set-Cookie:

热门文章

  1. linux多线程加解锁
  2. Performance Optimization for Mobile Devices
  3. ue4 网络代码分析
  4. Xcode中C、C++、Object-C3种语言的混编
  5. LPV(Light Propagation Volumes)
  6. 快速上手Google C++ 测试框架googletest
  7. Stm32之通用定时器复习
  8. JenKins自动化构建部署流程参考
  9. UVA1437 String painter
  10. Perl 字符串操作