10
Memblaze ® FlashRAID + PBlaze NVMe SSD 助力 MySQL 提升性能和可靠性

Memblaze FlashRAID + PBlaze NVMe SSD MySQL …在使用 NVMe SSD 提高单节点 MySQL 数据库性能的时 ,保证 MySQL 数据库存储的靠性 ?Memblaze 公司适时推出的

  • Upload
    others

  • View
    83

  • Download
    0

Embed Size (px)

Citation preview

Memblaze® FlashRAID + PBlaze NVMe

SSD

助力 MySQL 提升性能和可靠性

Memblaze® FlashRAID +PBlaze SSD 助力 MySQL 提升性能和可靠性

白皮书 北京忆恒创源科技有限公司

2

目录

摘要 ................................................................................................................................................................ 3

MySQL 介绍 ................................................................................................................................................. 3

FlashRAID 介绍 ............................................................................................................................................ 3

测试环境介绍 ................................................................................................................................................ 4

整体测试环境 ........................................................................................................................................ 4

性能测试工具 ........................................................................................................................................ 4

FlashRAID 配置 .................................................................................................................................... 5

测试前提条件 ................................................................................................................................................ 6

测试结果 ........................................................................................................................................................ 7

MySQL 数据库在 FlashRAID + 4 x PBlaze4 NVMe SSD 上面的性能表现 ................................ 7

FlashRAID 软件增加的延时 ................................................................................................................ 8

使用 FlashRAID+NVMe SSD 承载 MySQL 时,CPU io wait 比率占比 ..................................... 8

FlashRAID 消耗 CPU 比率 .................................................................................................................. 9

FlashRAID 的写放大(WA)计算 .......................................................................................................... 9

NVMe SSD 的写放大(WA)计算 ......................................................................................................... 9

结论 .............................................................................................................................................................. 10

Memblaze® FlashRAID +PBlaze SSD 助力 MySQL 提升性能和可靠性

白皮书 北京忆恒创源科技有限公司

3

摘要

随着闪存卡的普及,使得用户 MySQL 数据库相关的 IT 系统可以做到轻资产、高性能、高效能。

相比 SATA SSD, NVMe 协议效率比 SATA SSD 使用的 AHCI 协议效率更高,NVMe SSD 可提供更高性能

和更低时延,且 NVMe SSD 支持多核多队列技术(Multi-Core & Multi-Queue),可以在多核系统下实现无

锁并发并相对 SATA SSD 减小 CPU io wait。

相比普通的 PCIe SSD,新的 Linux/Windows/VMware 等平台会自带 NVMe SSD 原生驱动,大大减少运维

人员驱动的维护工作,同时 NVMe SSD 还支持做启动盘,并在不同的硬件和软件环境下支持热插拔,这是

整个 NVMe 生态共同协作的结果。

因此 NVMe SSD 承载 MySQL 数据库慢慢会成为更多用户的选择。

PBlaze4 是 Memblaze 推出的企业级 NVMe SSD,可以很好的满足 MySQL 数据库的性能需求。但是如何

在使用 NVMe SSD 提高单节点 MySQL 数据库性能的同时,保证 MySQL 数据库存储的可靠性?Memblaze

公司适时推出的 FlashRAID 软件很好的帮助客户解决了这一问题。

本白皮书中展示出了 FlashRAID + 4 x PBlaze NVMe SSD 在承载 MySQL 数据库的联机事务处理(OLTP)

业务时稳定和优异的性能,以及 FlashRAID 软件极低的 CPU 占有率。对于 SSD 的寿命,FlashRAID 软件只

引入很小的写放大(WA),几乎不会增加对 SSD 寿命的消耗。同时 CPU wait IO 的比率极低,说明 FlashRAID

+ PBlaze NVMe SSD 在多核系统下承载 MySQL 数据库这种多线程并发的业务是非常适合的。

MySQL 介绍

MySQL 是一个关系型数据库管理系统,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特

点,一般中小型网站的开发都选择 MySQL 作为网站数据库。MySQL 的 Master-Slave 或 Master-Master

复制架构,使得用户可以以较简洁的灾备模式为应用提供高可靠性,并可以选择在 Master 节点或 Slave 节

点使用 NVMe SSD 加速数据库 IO 访问能力,优化访问延时。在获得高性能的同时,由于单节点 NVMe SSD

故障往往会引发 Master-Slave 切换动作,这加大了运维人员的工作量。因此,提高 MySQL 单节点 NVMe

SSD 可靠性的任务迫在眉睫,在这方面 Memblaze 推出的 FlashRAID 软件为客户提供了很好的解决方案。

FlashRAID 介绍

FlashRAID 是 Memblaze 公司专为高速 NVMe SSD 设计的集卷管理和数据保护为一身的系统存储软件。

FlashRAID 可以把多个 NVMe SSD 物理存储资源进行池化,并导出多个虚拟逻辑卷给前端应用使用。

FlashRAID 极大提升系统中多块 NVMe SSD 的数据可靠性,充分聚合 NVMe SSD 的性能和容量,同时简化

服务器中多块 NVMe SSD 的管理。

FlashRAID 提供多种 RAID 数据保护级别,RAID 0,1,5,6 以及复合 RAID 50,10。不同 RAID 级别

的性能以及数据容错性不同。RAID 级别的设定可以在 vdisk 级别指定。vdisk 是 FlashRAID 以块设备接

口提供的虚拟卷,类似 LUN。客户端可以直接当做普通块设备使用。

Memblaze® FlashRAID +PBlaze SSD 助力 MySQL 提升性能和可靠性

白皮书 北京忆恒创源科技有限公司

4

FlashRAID 采用了全局资源池化技术,将所有 SSD 的存储资源进行细粒度池化管理,统一通过资源分配

器进行资源的再分配,可通过增加 SSD 快速动态拓展资源池大小。

FlashRAID 针对 SSD 的寿命特性实现了全局磨损均衡和“逆”磨损均衡,使得 FlashRAID 在提供数据

安全保护的同时能最大限度的使用 SSD。全局磨损均衡根据 SSD 进入系统的服务程度,尽量将数据写入

处于青年状态的设备中(磨损更少,寿命更长的设备),保证各个设备处于相同寿命状态。当存储池中

有多个 NVMe 设备进入“老年状态”(寿命将尽时),“逆”磨损均衡会集中将数据写入某一个磨损更

高的设备,使之退役,以此避免多个处于“老年期”的设备同时出现寿命耗尽情况,保证数据安全性。

当 FlashRAID 运行时,有掉盘或者坏盘情况发生时,会触发 FlashRAID 的数据重构操作。会基于元数

据信息,从其他设备上提取数据信息,自动重构出属于失效设备中的有效数据部分,并写入存储池中其

他存储设备中。存储池中的所有有效设备都参与重构的读写操作,提高重构性能,存储设备越多,重构

速度越快。并且 FlashRAID 通过智能数据重构(数据感知重构算法,优先级调度重构算法,局部重构算法)

优先恢复处于丢失风险最高的数据,高效保护数据安全性。

FlashRAID 根据不同的数据保护策略,在创建 vdisk 时可设置不同 RAID 级别。FlashRAID 对元数据通

过多副本的方式进行冗余保护,确保存储数据可靠性。

测试环境介绍

整体测试环境

服务器: Supermicro SuperServer 1028U-TN10RT+, 2 Intel(R) Xeon(R) CPU E5-2695 v3 @

2.30GHz*28,96GB DRAM

存储设备 : 4 x Memblaze 3.2T PBlaze4

Intel® S3500 240GB 作为系统盘

测试工具: sysbench 0.5

软件: CentOS 7.1

FlashRAID V1.1

MySQL 5.7.11(innodb)

性能测试工具

sysbench 是一款开源的多线程性能测试工具,可以执行

CPU/内存/线程/IO/数据库等方面的性能测试。数据库目前

支持对 MySQL/Oracle/PostgreSQL 的测试。本文利用

sysbench 在 mysql 数据库上测试 OLTP 模型,对应测试

oltp.lua 脚本。(oltp.lua 为模拟事物测试脚本,支持

myisam 和 innodb 存储引擎,测试包含如下内容,并采用

如框图默认参数)

oltp_point_selects * 10,

oltp_simple_ranges * 1,

oltp_sum_rangesm * 1,

oltp_order_ranges * 1,

oltp_distinct_ranges * 1,

oltp_index_updates * 1,

oltp_non_index_updates * 1,

DELETE * 1,

INSERT * 1.

Memblaze® FlashRAID +PBlaze SSD 助力 MySQL 提升性能和可靠性

白皮书 北京忆恒创源科技有限公司

5

FlashRAID 配置

disk 信息:

这里可以看到 FlashRAID 管理了 4*NVMe 3.2TB SSD。

spool 信息:

这里可以看到 FlashRAID 管理的 4*NVMe SSD 组成 sp0 这个 pool,按照 Raid5(2+1)的使用方式

最大支持 11,918GB 的 vdisk 总容量。

vdisk 信息:

Memblaze® FlashRAID +PBlaze SSD 助力 MySQL 提升性能和可靠性

白皮书 北京忆恒创源科技有限公司

6

这里可以看到我们在 FlashRAID 的 sp0 pool 创建了 4 个 vdisk(mfvd_0, mfvd_16, mfvd_32,mfvd_48),

其中创建测试 MySQL 数据库的是 mfvd_16 这个 vdisk 虚拟卷。它的 Raid 级别是 Raid 5,stripe unit

count=2 表示写 2 个数据要 1 个校验位,即 Raid5(2+1),stripe unit=8KB 表示每个 SSD 的 stripe 大小。

MySQL 测试表数据量

共创建 50*2000 万, 共 10 亿行数据。

测试前提条件

在测试之前,需要考虑以下操作:

1. 确保 PBlaze4 的分区有 4KiB 对齐。

2. 打开 irqbalance 服务或将 NVMe SSD 每一个中断绑定到每一个 CPU core(不用区分 NUMA

Node)。

3. 设置 CPU 的使用模式为最大性能模式。

4. MySQL 的读 IO 多为 16KB,写 IO 从 512 字节到 512KB 均存在(但 16KB 占比较高),故设置

FlashRAID 的 RAID 级别为 Raid5(2+1)且 Stripe Unit Size 为 8KB,这样 MySQL 下发的 16KB IO 会

完整的读写一个 Full Stripe Unit Size(2*8KB),以使得 FlashRAID 软件和 MySQL 做最佳匹配。

5. 使用 ext4 文件系统,设置 rw,noatime,nodiratime,nobarrier,data=ordered 为 mount 选项。

6. 设置 MySQL 数据库如下参数:

innodb_buffer_pool_size=65536M

innodb_buffer_pool_instances=16

innodb_doublewrite=1

innodb_flush_log_at_trx_commit=2

innodb_flush_method=O_DIRECT

innodb_read_io_threads = 8

innodb_write_io_threads = 16

7. 在 sysbench 测试工具中配置 50 个 2 千万数据的表,并设置测试并发连接数为 64。

8. 全盘随机写预处理 4*PBlaze4 NVMe SSD。

9. 测试中为了明确看出 FlashRAID 软件占用多少 CPU 资源,故绑定 FlashRAID 到 CPU 0 到 1

核,绑定 MySQL 进程到 CPU 2 到 55 核。

Memblaze® FlashRAID +PBlaze SSD 助力 MySQL 提升性能和可靠性

白皮书 北京忆恒创源科技有限公司

7

测试结果

MySQL 数据库在 FlashRAID + 4 x PBlaze4 NVMe SSD 上面的性能表现

图 1 TPS 值 图 2 每秒事物 95%时延低于多少 ms

图 1 表示每秒钟可以完成平均 11,745.92 次事物,每个事物包含 10 次 oltp_point_selects,1 次

oltp_simple_ranges,1 次 oltp_sum_rangesm,1 次 oltp_order_ranges,1 次 oltp_distinct_ranges,1

次 oltp_index_updates , 1 次 oltp_non_index_updates,1 次 DELETE 和 1 次 INSERT 操作。这个结果表

明承载在 FlashRAID 上面的 MySQL 数据库可以得到很好的性能发挥,每秒处理事物能力过万。

图 2 显示的是每秒完成 11,745.92 次事物,其中 95%的事物完成的时延在上图所示的时延之下,平均在

9.97ms 以下,这显示了 MySQL 跑在 FlashRAID 上仍然具有很低的时延抖动性。

图 3,db 层面每秒读写次数 图 4s, db 层面每秒读写次数

图 3 显示了 MySQL sysbench oltp 测试过程中 db 层面每秒完成的读写次数达到平均 211,464 次,且几乎

没有波动。

图 4 显示了对应的测试过程中 FlashRAID 的 vdisk 和 4 个 nvme ssd 上面 IOPS(nvme ssd 的平均 block

size=7.9KB),从图中可以看出如果按照 7.9KB 的 block size 计算,vdisk 的 IOPS 达到了平均 91,009.48,

02000400060008000

100001200014000

1

30

1

60

1

90

1

12

01

15

01

18

01

21

01

24

01

27

01

30

01

33

01

TPS

TIME(s)

FlashRAID sysbench OLTP Test

0

2

4

6

8

10

12

1

22

6

45

1

67

6

90

1

11

26

13

51

15

76

18

01

20

26

22

51

24

76

27

01

29

26

31

51

33

76

late

ncy

(ms)

TIME(s)

max latency of oltp trx under QoS 95%

0

50000

100000

150000

200000

250000

12

59

51

77

75

10

331

291

15

491

807

20

652

323

25

812

839

30

973

355

db

(R

ead

s &

Wri

tes)

/s

Time(s)

FlashRAID sysbench oltp test

db reads db writes db reads+writes

020000400006000080000

100000120000140000

1

25

8

51

5

77

2

10

29

12

86

15

43

18

00

20

57

23

14

25

71

28

28

30

85

33

42

IOP

S(A

vg. B

lock

siz

e=7

.9 K

B)

Time(s)

FlashRAID sysbench oltp test

VDISK(READ+WRITE)nvme0n1(read+write)nvme1n1(read+write)nvme2n1(read+write)nvme3n1(read+write)

Memblaze® FlashRAID +PBlaze SSD 助力 MySQL 提升性能和可靠性

白皮书 北京忆恒创源科技有限公司

8

而对应的 4 个 nvme ssd 的 IOPS 之和达到了 118,823.6, 考虑到 Raid5(2+1)的比例,nvme ssd 相比 VDISK

多出的额外的 IOPS 比例并不高,后面我们会详细计算 FlashRAID 软件引入的写放大(WA)是非常小的。

FlashRAID 软件增加的延时

图 5, VDISK 和 nvme ssd 读 latency(ms) 图 6, VDISK 和 nvme ssd 写 latency(ms)

图 5 可以看出 FlashRAID 软件在读 IO 层面比平均读 latency 最大的 nvme ssd 多引入了近 0.24ms 的时延。

图 6 可以看出 FlashRAID 软件在写 IO 层面比平均写 latency 最大的 nvme ssd 多引入了近 0.53ms 的时延。

FlashRAID 在提高单节点可靠性的同时,多加了一层软件引入时延是合理的。

使用 FlashRAID+NVMe SSD 承载 MySQL 时,CPU io wait 比率占比

图 7, CPU 的 io wait 比率 图 8, mysql 和 sysbench 占用 CPU 比例

图 7 和 图 8 均可以看出测试过程中绝大部分 CPU 被 MySQL 和 sysbench 测试工具这些用户态程序所占。

图 7 可以看出 CPU wait 在 IO 上面的比例平均只有 8.76%。NVMe SSD 由于采用多核多队列(Multi-C &

Multi-Q) 技术,使得每一个 CPU 的 core 只会有每个 NVMe SSD 所需处理中断的一个发送队列和一个完

成队列,这样在多核系统下 NVMe SSD 更容易做到无锁并发,使得多核 CPU 的使用效率提升,CPU io

wait 比率下降。

0

0.2

0.4

0.6

0.8

1

1

25

8

51

5

77

2

10

29

12

86

15

43

18

00

20

57

23

14

25

71

28

28

30

85

33

42

VDISK & NVMe Read Latency(ms)

VDISK READ Latency(ms)nvme0n1 READ Latency(ms)nvme1n1 READ Latency(ms)nvme2n1 READ Latency(ms)nvme3n1 READ Latency(ms)

0

0.2

0.4

0.6

0.8

1

1

22

6

45

1

67

6

90

1

11

26

13

51

15

76

18

01

20

26

22

51

24

76

27

01

29

26

31

51

33

76

VDISK & NVMe Write Latency(ms)

VDISK WRITE Latency(ms)

nvme0n1 Write Latency(ms)

nvme1n1 Write Latency(ms)

nvme2n1 Write Latency(ms)

nvme3n1 Write Latency(ms)

0

20

40

60

80

1

22

6

45

1

67

6

90

1

11

26

13

51

15

76

18

01

20

26

22

51

24

76

27

01

29

26

31

51

33

76

CPU Util%

CPU user% CPU sys%

CPU id% CPU wait%

Memblaze® FlashRAID +PBlaze SSD 助力 MySQL 提升性能和可靠性

白皮书 北京忆恒创源科技有限公司

9

FlashRAID 消耗 CPU 比率

图 9, CPU 使用情况

图 9 显示了测试中 CPU 的使用情况,其中测试时将 FlashRAID 进程绑定在 CPU core0 和 core1,MySQL

进程绑定在 CPU core2 到 core55,如图中所示 FlashRAID 软件消耗 CPU 比例不到 2 个 CPU 的 core。

FlashRAID 的写放大(WA)计算

FlashRAID

RAID5 (2+1)

VDISK

Avg. Write IOPS

4 x NVMe SSD

Avg. Write IOPS

Block Size=7.9KB 48,950 74,284

FlashrRAID 写放大为 = 𝐹𝑙𝑎𝑠ℎ𝑅𝐴𝐼𝐷总数据写入

𝑆𝑆𝐷总数据写入⁄ ,所以 FlashRAID+NVMeSSD 在做 MySQL

sysbench oltp 测试时的写放大(WA)=74,284/48,950=1.518。但考虑到 Raid5(2+1)本身的写放大(WA)理

论上就=1.5,所以 FlashRAID 软件引入的写放大比例只占(1.518-1.5)/1.518=1.19%。

由此可见 FlashRAID 软件在 MySQL 应用环境下本身引入的写放大(WA)非常小,此时使用 FlashRAID 方案

的写放大(WA)只取决于客户使用的 RAID 保护级别和 Stripe Unit Count。

NVMe SSD 的写放大(WA)计算

Memblaze® FlashRAID +PBlaze SSD 助力 MySQL 提升性能和可靠性

白皮书 北京忆恒创源科技有限公司

10

测试起始时间 测试结束时间

WA 13:57:26 14:58:18

nvme0n1 Total write to controller in GB(Host Write) 40447 41070

1.82504 Total write in GB since device born(NAND Write) 65944 67081

nvme1n1 Total write to controller in GB(Host Write) 38261 38877

1.662338 Total write in GB since device born(NAND Write) 61102 62126

nvme2n1 Total write to controller in GB(Host Write) 40834 41452

1.668285 Total write in GB since device born(NAND Write) 65364 66395

nvme3n1 Total write to controller in GB(Host Write) 35975 36266

1.597938 Total write in GB since device born(NAND Write) 56344 56809

由上表可见 Memblaze NVMe SSD 在 FlashRAID 和 MySQL 应用软件使用场景下的写放大(WA)只有 1.59

到 1.82。

结论

本测试清晰地显示出 MySQL 运行在 FlashRAID + Memblaze PBlaze4 NVMe SSD 上出色 OLTP(联机事务)

处理能力。且在 MySQL 应用场景中 FlashRAID 软件本身性能表现平稳,且引入的写放大(WA)很小可以忽略

不计,对 SSD 的寿命不会造成影响。

Memblaze PBlaze4 NVMe SSD 超强的性能和稳定性加上 FlashRAID 的可靠性保证,为客户提供了一种很

好的数据库解决方案。

版权声明

本文档中的所有内容、格式及相关产品的版权属于北京忆恒创源科技有限公司,在未经北京忆恒创源科技有限公司许可的情况下,不得

任意引用、拷贝、抄袭、仿制或翻译成其他语言。

本文档提到的其他商标或商品名称均是他们公司所属的商标或注册商标,除非特别声明,此类商标或商品与本公司没有任何联系。

本文档中的内容可能会有更新,如有变更,恕不另行通知。

©2011-2016 北京忆恒创源科技有限公司