1. 程式人生 > >Numa對MySQL多例項效能測試報告

Numa對MySQL多例項效能測試報告

目的

由於MySQL採用了執行緒模式,對於NUMA特性的支援並不好。如果單機執行多個MySQL例項,可以將MySQL繫結在不同的CPU節點上,並且採用繫結的記憶體分配策略,強制在本節點內分配記憶體,這樣既可以充分利用硬體的NUMA特性,又避免了單例項MySQL對多核CPU利用率不高的問題。

測試環境:

         測試系統環境如下所示:

Summary:

Dell R610, 1 x Xeon E5645 2.40GHz, 47.2GB / 48GB 1333MHz DDR3

System:

Dell PowerEdge R610 (Dell 08GXHX)

Processors:

1 (of 2) x Xeon E5645 2.40GHz 5860MHz FSB (HT enabled, 6 cores, 24 threads)

Memory:

47.2GB / 48GB 1333MHz DDR3 == 6 x 8GB, 6 x empty

Disk:

sda (scsi0): 1.2TB (17%) JBOD == 1 x DELL-PERC-H700

Disk-Control:

megaraid_sas0: LSI Logic / Symbios Logic MegaRAID SAS 2108 [Liberator], Package 12.10.4-0001, FW 2.100.03-1584, BIOS 3.18.00_4.09.05.00_0x0416A000, Cache 1GB, BBU

Chipset:

Intel 82801IB (ICH9)

Network:

em1 (bnx2): Broadcom NetXtreme II BCM5709 Gigabit, d4:be:d9:f5:62:50, 1000Mb/s <full-duplex>

OS:

CentOS 6.2 (Final), Linux 2.6.32-220.23.1.el6.x86_64 x86_64, 64-bit

此外,Virident FlashMAX官方提供的引數如下所示:

Capacity (GB)

1000

NAND Flash

MLC

Form Factor

Low Profile (half height, half length)

Read Performance

1.3 GB/s (4KB blocks)

325,000 IOPS (4KB blocks)

1,000,000 IOPs (0.5KB blocks)

Sustained Mixed Performance (75:25 r/w)

850 MB/s (4 KB blocks)

280,000 IOPS (4KB blocks)

Access Latency

19us

Lifetime (PB written to flash)

10, 15

以上測試系統可知,物理機器配置為兩個物理CPU,每個CPU上有6核心,開啟超執行緒狀態下,顯示為24 CPU。SSD的讀寫效能可以參照:《Virident FlashMAX測試》。

測試工具及條件

測試工具為percona提供的TPCC-MySQL基準測試工具,測試環境如下所示,資料大小大約為30G。並且所有例項的測試條件相同。

 [warehouse]: 300

 [connection]: 32

 [rampup]: 1200 (sec.)

 [measure]: 1800 (sec.)

測試方案

         測試numa對MySQL多例項效能影響,通過對numa將MySQL繫結在不同的CPU節點上,並且採用繫結的記憶體分配策略,強制在本節點內分配記憶體。具體測試如下:

1、關閉numa(numa= interleave),MySQL單例項;開啟numa(numa=default),MySQL單例項,進行效能測試,比較測試結果。

2、numa隔離MySQL兩個例項,instance1繫結到0,instance2繫結到1;無numa隔離的MySQL兩個例項,進行效能測試,比較測試結果。

3、numa隔離MySQL四個例項,instance1、instance3繫結到0,instance2、instance4繫結到1;以及無numa隔離的MySQL四個例項,進行效能測試,比較測試結果。

測試結果

1、MySQL單例項

關閉numa(numa = interleave),與開啟numa(numa = default)的MySQL效能測試結果如下所示:

測試

TpmC

關閉numanuma = interleave

20570.699 TpmC

開啟numanuma = default

20341.533 TpmC

2、MySQL兩個例項

numa隔離MySQL兩個例項,instance1繫結到0,instance2繫結到1,與無numa隔離的MySQL兩個例項的效能測試結果如下所示:

測試

instance1

instance2

numa隔離

16307.533 TpmC

14678.600 TpmC

numa隔離

15059.134 TpmC

15089.167 TpmC

3、MySQL四個例項

numa隔離MySQL四個例項,instance1、instance3繫結到0,instance2、instance4繫結到1,與無numa隔離的MySQL四個例項的效能測試結果如下所示:

測試

instance1

instance2

instance3

instance4

numa隔離

10623.866 TpmC

10325.767 TpmC

10623.600 TpmC

10287.800 TpmC

numa隔離

10268.100 TpmC

10316.400 TpmC

10323.134 TpmC

10260.200 TpmC

對比圖如下所示:

 

測試結論

         經過測試,從而驗證了單機執行多個MySQL例項,將MySQL繫結在不同的CPU節點上,並且採用繫結的記憶體分配策略,強制在本節點內分配記憶體,這樣既可以充分利用硬體的NUMA特性,又避免了單例項MySQL對多核CPU利用率不高的問題。

         此外,從測試結果來看,在相同測試條件下和測試壓力下,CPU:0上MySQL的效能明顯優於CPU:1上MySQL的效能。至於原因,仍然需要進一步的測試。

參考資料

1、《MySQL單機多例項方案》http://www.hellodb.net/2011/06/mysql_multi_instance.html