mysql 编译cpu数量_合适MySQL的Xeon 55XX系列CPU编译参数
適合mysql的Xeon 55XX系列CPU編譯參數
本文內容遵從CC版權協議, 可以隨意轉載, 但必須以超鏈接形式標明文章原始出處和作者信息及版權聲明
網址: http://www.penglixun.com/tech/database/xeon_55xx_mysql_compile_param.htmlXeon 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编译参数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 表名含有后缀 mysql 怎么删除_my
- 下一篇: lamp 安装pdo_mysql_LAM