Numa对MySQL多实例性能测试报告

时间:2022-04-15 06:45:40


本文转载自:http://blog.chinaunix.net/uid-26896862-id-3278913.html


分类: Mysql/postgreSQL

目的

由于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

 

对比图如下所示:

 Numa对MySQL多实例性能测试报告

 

测试结论

         经过测试,从而验证了单机运行多个MySQL实例,将MySQL绑定在不同的CPU节点上,并且采用绑定的内存分配策略,强制在本节点内分配内存,这样既可以充分利用硬件的NUMA特性,又避免了单实例MySQL对多核CPU利用率不高的问题。

         此外,从测试结果来看,在相同测试条件下和测试压力下,CPU:0上MySQL的性能明显优于CPU:1上MySQL的性能。至于原因,仍然需要进一步的测试。

 

参考资料

1、《MySQL单机多实例方案》http://www.hellodb.net/2011/06/mysql_multi_instance.html



注:近期参加MySQL运维学习,老师推荐该文章作为学习和技术提高的扩展阅读,先记录到自己的博客中,随后慢慢消化、学习、提高。本文与MySQL数据库 “性能优化”主题有关。