本文原创作者杜霆,京东商城基础平台部MySQL DBA,经作者同意发表于本人博客,如需转载需经本人同意。
一、测试背景
服务器升级SSD后,速度和性能没有得到应有的提升,原因是没有正确使用SSD,主要是raid、linux、mysql数据库等相关参数没有正确的配置,本文对SSD的相关参数进行了对比性能测试,根据相关资料以及测试结果得出相关结论,了解实用场景以及对应优势。
二、测试环境
主机:172.20.166.52
Cpu:32 * Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz
内存:129G
操作系统:CentOS release 6.6
Sysbench:Sysbench 0.5
SSD硬盘:800G*6 raid5
主机:172.20.166.23
Cpu:32 * Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz
内存:129G
操作系统:CentOS release 6.6
Sysbench:Sysbench 0.5
SSD硬盘:800G*6 raid10 /raid0
三、测试工具及内容
使用Sysbench对相同硬件、软件环境的raid、linux、mysql等相关参数进行io性能测试、mysql性能测试,对比io性能。
IO性能测试Sysbench参数:
参数名称 |
参数值 |
file-block-size |
16k |
混合读写比例 |
1.5(读写比例3:2) |
file-num |
20 |
file-total-size |
200G |
max-time(单位秒) |
3600 |
MySQL性能测试Sysbench参数:
参数名称 |
参数值 |
file-block-size |
16k |
混合读写比例 |
1.5(读写比例3:2) |
oltp-tables-count |
15 |
oltp-table-size |
50000000 |
max-time(单位秒) |
3600 |
四、测试结果
1、Linux系统参数测试结果
Linux对比测试参数如下:
参数类型 |
对比参数值1 |
对比参数值2 |
NUMA |
开启 |
关闭 |
IO调度算法 |
Deadline |
Noop |
Rotational轮转模式 |
0 |
1(默认值) |
read_ahead_kb预读大小 |
0 |
128(默认值) |
rq_affinity |
2 |
1(默认值) |
对Linux操作系统测试了5组参数,分别如上图表所示,由测试数据可得出如下结论:
1、关闭NUMA,对SSD硬盘性能提高较大;
2、IO调度算法采用Deadline和Noop性能差距不大,Noop调度算法性能略高于Deadline;
3、rotational、read_ahead_kb、rq_affinity参数的调整对SSD硬盘性能几乎没有影响,建议使用默认配置。
2、Raid参数测试结果
Raid对比测试参数如下:
参数类型 |
对比参数值1 |
对比参数值2 |
Write Policy |
WriteBack-WB |
WriteThrough-WT |
Read Policy |
Normal(关闭预读功能) |
ReadAdaptive |
IO Policy |
Direct |
Cached |
BGI(Background initialization) |
Disabled(0%) |
30% |
BGI(Background initialization):
开启BGI,创建好Raid阵列后不必等待初始化完成就可以开始使用,比如分区和格式化,但是系统仍然在后台检查磁盘。
对Raid配置测试了4组参数,分别如上图表所示,由测试数据可得出如下结论:
1、Raid的Write Policy设置为WriteBack,硬盘性能有很大提高,而且性能比较稳定;
2、Raid的Read Policy设置为ReadAdaptive,硬盘性能略高于Normal;
3、Raid的IO Policy设置为Direct,性能明显高于Cached;
4、BGI采用默认配置的30%或者关闭BGI,性能几乎没有变化,建议使用默认配置。
3、Raid0的OP测试结果
OP配置对比如下:
参数类型 |
对比参数值1 |
对比参数值2 |
OP(Over-provisioning:预留空间) |
NO-OP(硬盘空间全部分区) |
15%-OP(留下15%空间不分区) |
对比测试了不设置OP和设置15%的OP,如上图表所示,由测试数据可得出如下结论:
1、io测试时线程数小于128时,15%的OP的性能明显高于不设置OP的性能,随着线程数的增加,15%的OP的性能优势逐渐减少,到1024线程时,两者性能很接近。
2、mysql测试时15%的OP的性能略高于不设置OP的性能,两者性能很接近。
4、MySQL参数测试结果
MySQL对比测试参数如下:
参数类型 |
对比值1 |
对比值2 |
对比值3 |
对比值4 |
对比值5 |
对比值6 |
对比值7 |
innodb_write_io_threads |
4 |
8 |
16 |
||||
innodb_read_io_threads |
4 |
8 |
16 |
||||
innodb_log_file_size |
512M |
1024M |
1536M |
2048M |
|||
innodb_io_capacity |
500 |
1000 |
2000 |
3000 |
4000 |
8000 |
12000 |
innodb_max_dirty_pages_pct |
25 |
40 |
75 |
95 |
对MySQL测试了5组参数,分别如上图表所示,由测试数据可得出如下结论:
1、innodb_write_io_threads/ innodb_read_io_threads设置为8性能比较理想;
2、innodb_log_file_size设置为1536M或者2048M,性能差别不大;
3、innodb_io_capacity测试了从500到12000的参数,性能差别不大,设置为3000时出现测试数据的最大值,从测试数据观察,该参数设置在2000-8000范围内性能相对理想;
4、innodb_max_dirty_pages_pct设置为75性能较为理想。
五、LINUX参数测试数据对比
涉及到的linux对比测试参数如下:
参数类型 |
对比参数值1 |
对比参数值2 |
NUMA |
开启 |
关闭 |
IO调度算法 |
Deadline |
Noop |
Rotational轮转模式 |
0 |
1(默认值) |
read_ahead_kb预读大小 |
0 |
128(默认值) |
rq_affinity |
2 |
1(默认值) |
对Linux操作系统测试了5组参数,分别如上图表所示,由测试数据可得出如下结论:
1、关闭NUMA,对SSD硬盘性能提高较大;
2、IO调度算法采用Deadline和Noop性能差距不大,Noop调度算法性能略高于Deadline;
3、rotational、read_ahead_kb、rq_affinity参数的调整对SSD硬盘性能几乎没有影响。
1、NUMA测试数据对比
1、IO性能测试
threads |
关numa-吞吐量 |
开numa-吞吐量 |
关numa-iops |
开numa-iops |
关numa-load |
开numa-load |
关numa-iowait |
开numa-iowait |
8 |
378.54 |
266.41 |
24226.79 |
17050.5 |
16 |
18 |
6.5 |
6 |
16 |
458.75 |
360.75 |
29359.85 |
23087.8 |
31 |
33 |
11 |
10 |
32 |
553.27 |
450.82 |
35409.14 |
28852.3 |
53 |
51 |
21 |
20 |
64 |
595.53 |
523.49 |
38113.78 |
33503.5 |
85 |
85 |
42 |
38 |
128 |
613.85 |
539.76 |
39286.61 |
34544.5 |
138 |
140 |
63 |
65 |
256 |
605.66 |
534.08 |
38762.29 |
34181.1 |
260 |
260 |
65 |
72 |
512 |
603.14 |
527.04 |
38600.85 |
33730.6 |
520 |
520 |
67 |
73 |
2、MySQL性能测试
threads |
关numa-tps |
开numa-tps |
关numa-qps |
开numa-qps |
关numa-load |
开numa-load |
关numa-iowait |
开numa-iowait |
8 |
2382.1 |
1363.04 |
24995.58 |
24534.7 |
6 |
7 |
4 |
5 |
16 |
2727.46 |
2608.05 |
49094.31 |
46945 |
7 |
7 |
3 |
6 |
32 |
4324.6 |
4053.62 |
77842.73 |
72965.1 |
5 |
6.5 |
3 |
4.5 |
64 |
5317.55 |
4963.41 |
95715.96 |
89341.4 |
7 |
7.5 |
1.7 |
2.5 |
128 |
4758.36 |
4553.22 |
85650.52 |
81958 |
10 |
10 |
1.8 |
2 |
256 |
4494.63 |
4364.49 |
80903.31 |
78560.9 |
20 |
27 |
1.6 |
1.8 |
512 |
4467.94 |
4411.62 |
80422.83 |
79409.1 |
35 |
35 |
1.7 |
1.8 |
2、IO调度测试数据对比
1、IO性能测试
threads |
deadline-吞吐量 |
noop-吞吐量 |
deadline-iops |
noop-iops |
deadline-load |
noop-load |
deadline -iowait |
noop-iowait |
8 |
255.89 |
352.8 |
16377.04 |
22581.8 |
18 |
19.51 |
6.1 |
6.71 |
16 |
352.47 |
465.14 |
22557.94 |
29768.7 |
33 |
34.21 |
8.7 |
11.51 |
32 |
447.36 |
558.68 |
28631.13 |
35755.7 |
55 |
56.09 |
18 |
22.56 |
64 |
536.64 |
599.48 |
34345.19 |
38366.5 |
86 |
83.54 |
36 |
43.86 |
128 |
581.75 |
609.07 |
37231.87 |
38980.8 |
145 |
138.37 |
60 |
59.07 |
256 |
575.5 |
626.5 |
36831.87 |
40095.8 |
265 |
266.36 |
76 |
62.77 |
512 |
550.95 |
620.77 |
35260.53 |
39729.4 |
520 |
520.75 |
78 |
64.54 |
2、MySQL性能测试
threads |
deadline-tps |
noop-tps |
deadline-qps |
noop-qps |
deadline-load |
noop-load |
deadline-iowait |
noop-iowait |
8 |
1555.47 |
1173.77 |
27998.43 |
21127.9 |
5 |
10.89 |
2 |
1.57 |
16 |
2723.71 |
2527.73 |
49026.76 |
45499.2 |
6 |
11.75 |
2.5 |
2.35 |
32 |
3989.45 |
3998.67 |
71810.16 |
71976.1 |
5 |
12.78 |
2.5 |
2.96 |
64 |
4743.53 |
4888.79 |
85363.88 |
87998.3 |
7.39 |
10.57 |
2.68 |
2.39 |
128 |
4587.23 |
4821.08 |
82570.19 |
86779.5 |
8.37 |
13.53 |
1.87 |
2.15 |
256 |
4446.68 |
4544.65 |
80040.23 |
81803.7 |
12.39 |
17.13 |
1.67 |
1.61 |
512 |
4340.15 |
4789.82 |
78122.7 |
86216.8 |
35.72 |
24.92 |
1.42 |
2.17 |
3、rotational测试数据对比
threads |
0-吞吐量 |
1-吞吐量 |
0-iops |
1-iops |
8 |
406.1 |
406.13 |
25990.49 |
25992.03 |
16 |
462.09 |
461.72 |
29573.52 |
29550.28 |
32 |
477.09 |
477.66 |
30533.51 |
30569.96 |
64 |
484.68 |
484.88 |
31019.8 |
31032.59 |
128 |
487.97 |
488.2 |
31229.86 |
31244.88 |
256 |
488.26 |
488.25 |
31248.86 |
31248.14 |
512 |
488.09 |
488.21 |
31237.47 |
31245.54 |
1024 |
487.96 |
487.96 |
31229.39 |
31229.69 |
4、read_ahead_kb测试数据对比
threads |
128-吞吐量 |
0-吞吐量 |
128-iops |
0-iops |
8 |
406 |
406.61 |
25988.81 |
26023.23 |
16 |
462.25 |
462.5 |
29583.82 |
29600.2 |
32 |
477.61 |
477.89 |
30566.8 |
30584.83 |
64 |
484.92 |
485.05 |
31035.1 |
31043.36 |
128 |
488.22 |
488.3 |
31245.99 |
31251.39 |
256 |
488.27 |
488.31 |
31249.47 |
31251.88 |
512 |
488.25 |
488.19 |
31247.81 |
31244.06 |
1024 |
488.18 |
487.98 |
31243.82 |
31230.88 |
5、rq_affinity测试数据对比
threads |
1-吞吐量 |
2-吞吐量 |
1-iops |
2-iops |
8 |
406.36 |
406.35 |
26006.89 |
26006.12 |
16 |
462.14 |
462.14 |
29577 |
29577.02 |
32 |
477.62 |
477.51 |
30567.6 |
30560.65 |
64 |
484.92 |
485.03 |
31034.82 |
31041.8 |
128 |
488.21 |
488.18 |
31245.61 |
31243.84 |
256 |
488.36 |
488.37 |
31254.91 |
31255.43 |
512 |
488.2 |
488.29 |
31244.94 |
31250.27 |
1024 |
488 |
488.09 |
31232.01 |
31237.56 |
六、RAID参数测试数据对比
涉及到的raid对比测试参数如下:
参数类型 |
对比参数值1 |
对比参数值2 |
Write Policy |
WriteBack-WB |
WriteThrough-WT |
Read Policy |
Normal |
ReadAdaptive |
IO Policy |
Direct |
Cached |
BGI(Background initialization) |
Disabled(0%) |
30% |
BGI(Background initialization):
开启BGI,创建好Raid阵列后不必等待初始化完成就可以开始使用,比如分区和格式化,但是系统仍然在后台检查磁盘。
对Raid配置测试了4组参数,分别如上图表所示,由测试数据可得出如下结论:
1、Raid的Write Policy使用Writeback,硬盘性能有很大提高,而且性能比较稳定;
2、Raid的Read Policy使用ReadAdaptive,硬盘性能略高于Normal;
3、Raid的IO Policy使用Direct,性能明显高于Cached;
4、BGI采用默认配置30%或者关闭BGI,性能几乎没有变化。
1、Write Policy测试数据对比
1、IO性能测试
threads |
WB-吞吐量 |
WT-吞吐量 |
WB-iops |
WT-iops |
8 |
352.8 |
298.89 |
22581.78 |
19128.82 |
16 |
465.14 |
397.59 |
29768.72 |
25445.96 |
32 |
558.68 |
441.74 |
35755.67 |
28271.6 |
64 |
599.48 |
460.09 |
38366.47 |
29446.06 |
128 |
609.07 |
459.93 |
38980.8 |
29435.51 |
256 |
626.5 |
465.37 |
40095.83 |
29783.48 |
512 |
620.77 |
112.92 |
39729.38 |
7227.12 |
2、MySQL性能测试
threads |
WB-tps |
WT-tps |
WB-qps |
WT-qps |
WB-load |
WTB-load |
WB-iowait |
WT-iowait |
8 |
1173.77 |
1078.65 |
21127.87 |
19415.7 |
10.89 |
7.15 |
1.57 |
3.18 |
16 |
2527.73 |
1778.8 |
45499.17 |
32018.3 |
11.75 |
9.17 |
2.35 |
4.95 |
32 |
3998.67 |
2632.47 |
71976.13 |
47384.4 |
12.78 |
10.27 |
2.96 |
6.32 |
64 |
4888.79 |
3974.11 |
87998.27 |
71534 |
10.57 |
11.23 |
2.39 |
4.98 |
128 |
4821.08 |
3498.19 |
86779.46 |
62967.3 |
13.53 |
11.69 |
2.15 |
3.57 |
256 |
4544.65 |
3495.27 |
81803.69 |
62914.8 |
17.13 |
22.25 |
1.61 |
2.86 |
512 |
4789.82 |
3358.78 |
86216.75 |
60458 |
24.92 |
20.85 |
2.17 |
1.76 |
2、Read Policy测试数据对比
1、IO性能测试
threads |
Normal-吞吐量 |
ReadAdaptive-吞吐量 |
Normal-iops |
ReadAdaptive-iops |
8 |
312.87 |
380.72 |
20023.46 |
24366.25 |
16 |
440.28 |
479.39 |
28177.66 |
30680.9 |
32 |
539.43 |
566.26 |
34523.69 |
36240.67 |
64 |
591.11 |
611.28 |
37831.34 |
39122.05 |
128 |
604.66 |
619.29 |
38698.5 |
39634.77 |
256 |
602.61 |
621.31 |
38566.82 |
39763.55 |
512 |
606.65 |
621.09 |
38825.55 |
39749.61 |
1024 |
604.67 |
619.26 |
38698.98 |
39632.65 |
2、MySQL性能测试
threads |
Normal-吞吐量 |
ReadAdaptive-吞吐量 |
Normal-iops |
ReadAdaptive-iops |
8 |
312.87 |
380.72 |
20023.46 |
24366.25 |
16 |
440.28 |
479.39 |
28177.66 |
30680.9 |
32 |
539.43 |
566.26 |
34523.69 |
36240.67 |
64 |
591.11 |
611.28 |
37831.34 |
39122.05 |
128 |
604.66 |
619.29 |
38698.5 |
39634.77 |
256 |
602.61 |
621.31 |
38566.82 |
39763.55 |
512 |
606.65 |
621.09 |
38825.55 |
39749.61 |
1024 |
604.67 |
619.26 |
38698.98 |
39632.65 |
3、IO Policy测试数据对比
threads |
Direct-吞吐量 |
Cached-吞吐量 |
Direct-iops |
Cached-iops |
8 |
408.54 |
375.5 |
26146.57 |
24032.03 |
16 |
462.81 |
411.97 |
29619.75 |
26366.34 |
32 |
487.86 |
428.27 |
31222.75 |
27409.33 |
64 |
491.41 |
432.06 |
31450.35 |
27651.82 |
128 |
494.34 |
435.31 |
31637.56 |
27859.79 |
256 |
494.42 |
435.96 |
31642.94 |
27901.3 |
512 |
494.18 |
436 |
31627.73 |
27903.83 |
1024 |
493.97 |
436.11 |
31614.19 |
27911.18 |
4、BGI测试数据对比
threads |
30%-吞吐量 |
disabled-吞吐量 |
30%-iops |
disabled-iops |
8 |
413.43 |
411.95 |
26459.45 |
26364.5 |
16 |
469.9 |
469.59 |
30073.86 |
30054.01 |
32 |
494.27 |
493.5 |
31633.52 |
31584.15 |
64 |
496.97 |
496.4 |
31806.23 |
31769.53 |
128 |
499.9 |
499.41 |
31993.47 |
31962.09 |
256 |
499.97 |
499.59 |
31997.9 |
31973.49 |
512 |
499.69 |
499.13 |
31980.14 |
31944.6 |
1024 |
499.31 |
498.8 |
31955.78 |
31923.29 |
七、Raid0的SSD OP测试数据对比
OP是Over-provisioning(预留空间)的简称,是指用户不可操作的容量,就是留出一部分容量不使用不分区,OP预留的空间一般被用于优化操作。
参数类型 |
对比参数值1 |
对比参数值2 |
OP(Over-provisioning:预留空间) |
NO-OP(硬盘空间全部分区) |
15%-OP(留下15%空间不分区) |
对比测试了不设置OP和设置15%的OP,分别如上图表所示,由测试数据可得出如下结论:
1、io测试时线程数小于128时,15%的OP的性能明显高于不设置OP的性能,随着线程数的增加,15%的OP的性能优势逐渐减少,到1024线程时,两者性能很接近。
2、mysql测试时15%的OP的性能略高于不设置OP的性能,两者性能很接近。
1、IO性能测试
threads |
NO_OP-吞吐量 |
15%OP-吞吐量 |
NO_OP-iops |
15%OP-iops |
8 |
355.44 |
400.85 |
22748.07 |
25654.71 |
16 |
496.2 |
521.74 |
31756.54 |
33391.2 |
32 |
601.71 |
612.09 |
38509.32 |
39173.7 |
64 |
635.39 |
639.79 |
40665.1 |
40946.7 |
128 |
641.7 |
646.56 |
41069.11 |
41379.56 |
256 |
640.71 |
644.65 |
41005.19 |
41257.91 |
512 |
640.51 |
642.44 |
40992.81 |
41116.14 |
1024 |
640.96 |
641.78 |
41021.33 |
41074.22 |
2、MySQL性能测试
threads |
NO_OP-tps |
15%OP-tps |
NO_OP-qps |
15%OP-qps |
8 |
1721.79 |
1745.69 |
30992.22 |
31422.41 |
16 |
3070.81 |
2999.36 |
55274.51 |
53988.55 |
32 |
5024.17 |
5087.03 |
90435.04 |
91706.48 |
64 |
5769.8 |
5800.62 |
103856.32 |
104811.25 |
128 |
6029.35 |
6047.59 |
108528.26 |
108856.71 |
256 |
6163.54 |
6172.09 |
110943.75 |
111097.59 |
512 |
5825.3 |
5870.96 |
104855.43 |
105377.31 |
1024 |
5263.82 |
5302.43 |
94748.79 |
95443.74 |
八、MySQL参数测试数据对比
涉及到的MySQL对比测试参数如下:
参数类型 |
对比值1 |
对比值2 |
对比值3 |
对比值4 |
对比值5 |
对比值6 |
对比值7 |
innodb_write_io_threads |
4 |
8 |
16 |
||||
innodb_read_io_threads |
4 |
8 |
16 |
||||
innodb_log_file_size |
512M |
1024M |
1536M |
2048M |
|||
innodb_io_capacity |
500 |
1000 |
2000 |
3000 |
4000 |
8000 |
12000 |
innodb_max_dirty_pages_pct |
25 |
40 |
75 |
95 |
对MySQL测试了5组参数,分别如上图表所示,由测试数据可得出如下结论:
1、innodb_write_io_threads/ innodb_read_io_threads设置为8性能比较理想;
2、innodb_log_file_size设置为1536M或者2048M性能较理想,两者性能差别不大;
3、innodb_io_capacity测试了从500到12000的参数,性能差别不大,设置为3000时出现测试数据的最大值,从测试数据观察,该参数设置在2000-8000范围内性能相对理解;
4、innodb_max_dirty_pages_pct设置为75性能较为理想。
1、innodb_write/read_io_threads测试数据
threads |
4threads-tps |
8threads-tps |
16threads-tps |
4threads-qps |
8threads-qps |
16threads-qps |
8 |
1173.77 |
1492.43 |
1419.11 |
21127.9 |
26863.76 |
25543.96 |
16 |
2527.73 |
2786.58 |
2503.45 |
45499.2 |
50158.43 |
45062.06 |
32 |
3998.67 |
4089.44 |
4047.88 |
71976.1 |
73609.92 |
72861.79 |
64 |
4888.79 |
5007.99 |
4906.46 |
87998.3 |
90143.74 |
88316.28 |
128 |
4821.08 |
4910.92 |
4968.95 |
86779.5 |
88796.58 |
89441.11 |
256 |
4544.65 |
4569.68 |
4576.27 |
81803.7 |
82254.23 |
82372.85 |
512 |
4457.77 |
4471.44 |
4430.32 |
80239.9 |
80485.88 |
79745.69 |
2、innodb_log_file_size测试数据
threads |
512M-tps |
1024M-tps |
1536M-tps |
2048M-tps |
512M-qps |
1024M-qps |
1536M-qps |
2048M-qps |
8 |
1492.43 |
1673.89 |
1624.9 |
1610.53 |
26863.76 |
30130.05 |
29248.2 |
28989.6 |
16 |
2786.58 |
2842.86 |
2883.26 |
2954.41 |
50158.43 |
51171.45 |
51898.65 |
53179.3 |
32 |
4089.44 |
4400.77 |
4498.56 |
4537.56 |
73609.92 |
79213.84 |
80974.15 |
81676 |
64 |
5007.99 |
5017.13 |
5095.41 |
5189.49 |
90143.74 |
90308.36 |
91717.42 |
93410.9 |
128 |
4710.92 |
5286.19 |
5309.15 |
5350.92 |
84796.58 |
95151.4 |
95564.78 |
96316.6 |
256 |
4569.68 |
5223.62 |
5460.57 |
5465.27 |
82254.23 |
94025.11 |
98290.23 |
98374.9 |
512 |
4471.44 |
5101.56 |
5403.77 |
5408.45 |
80485.88 |
91828.04 |
97267.94 |
97352 |
3、innodb_io_capacity测试数据
threads |
500-tps |
1000-tps |
2000-tps |
3000-tps |
4000-tps |
6000-tps |
8000-tps |
12000-tps |
8 |
1658.26 |
1630.92 |
1567.11 |
1616.33 |
1587.68 |
1605.74 |
1616.98 |
1618.39 |
16 |
2889.11 |
2887.32 |
2925.1 |
2946.26 |
2927.38 |
2946.93 |
2933.97 |
3038.03 |
32 |
4485.99 |
4491.16 |
4560.83 |
4564.73 |
4536.17 |
4563.98 |
4563.86 |
4687.67 |
64 |
5115.52 |
5083.29 |
5158.46 |
5158.74 |
5183.22 |
5209.63 |
5136.77 |
5341.22 |
128 |
5323.14 |
5307.32 |
5324.14 |
5356.27 |
5350.89 |
5470.49 |
5439 |
5461.05 |
256 |
5477.86 |
5492.01 |
5505.18 |
5513.2 |
5473.41 |
5492.54 |
5494.19 |
5465.69 |
512 |
5426.18 |
5414.67 |
5400.05 |
5404.58 |
5277.26 |
5363.1 |
5374.89 |
5364.93 |
1024 |
4911.33 |
4884.97 |
4901.06 |
4924.87 |
4931.67 |
4924.81 |
4760.45 |
4936.01 |
threads |
500-qps |
1000-qps |
2000-qps |
3000-qps |
4000-qps |
6000-qps |
8000-qps |
12000-qps |
8 |
29848.7 |
29356.6 |
28208.03 |
29093.9 |
28578.33 |
28903.25 |
29105.55 |
29131 |
16 |
52003.9 |
51971.8 |
52651.85 |
53032.6 |
52692.87 |
53044.72 |
52811.43 |
54684.6 |
32 |
80747.8 |
80840.9 |
82094.89 |
82165.1 |
81651.13 |
82151.58 |
82149.53 |
84378.1 |
64 |
92079.4 |
91499.3 |
92852.3 |
92857.4 |
93298.04 |
93773.42 |
92461.83 |
96142 |
128 |
95816.5 |
95531.7 |
95834.49 |
96412.9 |
96316.11 |
98468.76 |
97902.01 |
98298.8 |
256 |
98601.6 |
98856.2 |
95505.18 |
99237.7 |
98521.44 |
98865.67 |
98895.35 |
98382.4 |
512 |
97671.2 |
97464.1 |
97200.94 |
97282.5 |
94990.66 |
96535.85 |
96747.99 |
96568.8 |
1024 |
88403.9 |
87929.4 |
88219.13 |
88647.6 |
88770.07 |
88646.51 |
85688.05 |
88848.1 |
4、innodb_max_dirty_pages_pct测试数据
threads |
25-tps |
40-tps |
75-tps |
95-tps |
8 |
1592.35 |
1635.88 |
1616.33 |
1604.2 |
16 |
2926.66 |
2914.71 |
2946.26 |
2963.03 |
32 |
4621.18 |
4669.54 |
4564.73 |
4640 |
64 |
5183.43 |
5216.98 |
5158.74 |
5221.39 |
128 |
5374.46 |
5418.1 |
5356.27 |
5346.03 |
256 |
5467.12 |
5465.59 |
5513.2 |
5436.56 |
512 |
5325.57 |
5394.82 |
5404.58 |
5347.19 |
1024 |
4746.07 |
4899.43 |
4924.87 |
4769.11 |
九、相同硬盘数不同raid测试数据对比
使用6块ssd硬盘,分别配置了raid5、raid10、raid0、raid0-15%OP,进行了io混合随机读写性能测试。
Sysbench测试参数:
参数名称 |
参数值 |
file-block-size |
16k |
混合读写比例 |
1.5(读写比例3:2) |
oltp-tables-count |
15 |
oltp-table-size |
50000000 |
1、不同Raid对比分析结果
1、硬盘利用率
Raid0的硬盘空间使用率是100%,如果预留15%做OP,空间使用率只有全部硬盘大小的75%;Raid5的空间使用率是(n-1)/n(n是磁盘数量,磁盘数量越多,空间使用率越高);Raid10的硬盘使用率只有50%;硬盘使用率顺序是
Raid0 > raid0-15%OP > Raid5 > Raid10
2、读写性能
raid0、raid0-15%OP的读写性能明显高于raid5、raid10,raid0-15%OP的性能略高于raid0。
raid0-15%OP > raid0 > raid10 > raid5
3、稳定安全性
Raid10是最安全稳定的,Raid5提供了一块盘的奇偶检验保证安全,Raid0没有安全保护措施。另外当Raid5一块盘出现故障时候,其性能明显下降。
2、不同Raid测试数据
1、io混合随机读写性能数据
threads |
raid5-吞吐量 |
raid10-吞吐量 |
raid0-NO_OP-吞吐量 |
raid0-15%OP-吞吐量 |
raid5-iops |
raid10-iops |
raid0-NO_OP-iops |
raid0-15%OP-iops |
8 |
486.81 |
378.54 |
355.44 |
400.85 |
31155.9 |
24226.79 |
22748.07 |
25654.71 |
16 |
531.31 |
458.75 |
496.2 |
521.74 |
34003.5 |
29359.85 |
31756.54 |
33391.2 |
32 |
567.32 |
553.27 |
601.71 |
612.09 |
36308.5 |
35409.14 |
38509.32 |
39173.7 |
64 |
588.14 |
595.53 |
635.39 |
639.79 |
37640.9 |
38113.78 |
40665.1 |
40946.7 |
128 |
584.11 |
613.85 |
641.7 |
646.56 |
37383.2 |
39286.61 |
41069.11 |
41379.56 |
256 |
586.53 |
605.66 |
640.71 |
644.65 |
37537.8 |
38762.29 |
41005.19 |
41257.91 |
512 |
584.89 |
603.14 |
640.51 |
642.44 |
37432.7 |
38600.85 |
40992.81 |
41116.14 |
2、一块硬盘故障,raid10和raid5性能变化
raid5 |
MB_read/s |
MB_wrtn/s |
吞吐量 |
raid10 |
MB_read/s |
MB_wrtn/s |
吞吐量 |
306.98 |
244.34 |
551.32 |
342.13 |
239.01 |
581.14 |
||
307.48 |
240.34 |
547.82 |
420.18 |
174.85 |
595.03 |
||
311.98 |
243.11 |
555.09 |
210.94 |
319.88 |
530.82 |
||
306.69 |
242.92 |
549.61 |
396.29 |
198.82 |
595.11 |
||
309.18 |
241.09 |
550.27 |
455.8 |
144.79 |
600.59 |
||
317.05 |
243.94 |
560.99 |
321.38 |
248.11 |
569.49 |
||
328.3 |
247.53 |
575.83 |
269.85 |
288.21 |
558.06 |
||
319.46 |
257.87 |
577.33 |
478.38 |
136.64 |
615.02 |
||
311.09 |
253.59 |
564.68 |
460.5 |
134.47 |
594.97 |
||
315.82 |
256.95 |
572.77 |
377.16 |
210.37 |
587.53 |
||
158.27 |
156.9 |
315.17 |
368.72 |
215.12 |
583.84 |
||
160.46 |
166.41 |
326.87 |
291.59 |
267.16 |
558.75 |
||
159.12 |
163.47 |
322.59 |
414.14 |
192.47 |
606.61 |
||
156.2 |
162.23 |
318.43 |
459.39 |
151.82 |
611.21 |
||
160.99 |
163.99 |
324.98 |
215.77 |
325.02 |
540.79 |
||
157.78 |
161.77 |
319.55 |
391.12 |
198.15 |
589.27 |
||
160.99 |
163.99 |
324.98 |
365.72 |
221.12 |
586.84 |
||
158.06 |
160.86 |
318.92 |
250.39 |
297.45 |
547.84 |
||
161.4 |
162.81 |
324.21 |
457.67 |
153.27 |
610.94 |
||
159.08 |
161.38 |
320.46 |
360.43 |
226.9 |
587.33 |
十、SSD推荐参数配置
SSD对应linux、raid、mysql推荐参数以及推荐参数设置方法。
1、Linux推荐参数设置
1、关闭numa
2、io调度算法设置为noop
3、Rotational保持默认值1
4、read_ahead_kb保持默认值128
5、rq_affinity保持默认值1
2、Linux推荐参数设置方法
1、关闭numa
进入System BIOS设置,选择Memory设置,选择Node Interteaving为Enable进行关闭numa,如下图所示。
执行命令“numactl --hardware”进行检查,输出结果available: 1 nodes (0)时表示关闭成功,如下图。
2、修改io调度算法noop
执行命令:echo noop > /sys/block/sda/queue/scheduler
检查命令:cat /sys/block/sda/queue/scheduler
3、Rotational值的调整
执行命令:echo 0 > /sys/block/sda/queue/rotational
查看命令:cat /sys/block/sda/queue/rotational
4、read_ahead_kb值的调整
执行命令:echo 0 > /sys/block/sda/queue/read_ahead_kb
查看命令:cat /sys/block/sda/queue/read_ahead_kb
5、rq_affinity值的调整
执行命令:echo 0 > /sys/block/sda/queue/rq_affinity
查看命令:cat /sys/block/sda/queue/rq_affinity
3、Raid推荐参数设置
1、Write Policy设置为WriteBack(WB)
2、Read Policy设置为ReadAdaptive
3、IO Policy设置为Direct
4、BGI(Background initialization)保持默认设置30%
4、Raid推荐参数设置方法
使用MegaCli命令可以修改Raid参数配置,该命名是官方提供的针对MegaRAID卡的设置命令,如果使用不同品牌Raid卡,可以参照官方提供的命令进行设置。
MegaCli查看Raid参数命令:
查看所有Raid:MegaCli -LDGetProp -Cache -LALL –aALL
查看其中一个Raid:MegaCli -LDGetProp -Cache -L1 -a0
MegaCli修改Raid参数命令:
MegaCli -LDSetProp WT|WB|NORA|RA|ADRA -L1 -a0
or
MegaCli -LDSetProp -Cached|-Direct -L1 -a0
1、Write Policy设置为WriteBack命令
MegaCli -LDSetProp WB -L1 -a0
2、Read Policy设置为ReadAdaptive命令
MegaCli -LDSetProp ADRA -L1 -a0
3、IO Policy设置为Direct命令
MegaCli -LDSetProp -Direct -L1 -a0
4、BGI调整方法
进入Device Settings,选择Interated RAID Controller,选择Controller Managent,选择Change Controller Properties,可以修改BGI参数,如下图。
5、SSD的OP推荐设置
推荐保留15%的硬盘空间不进行分区,这部分空间即是OP的保留空间。
设置方法:分区时候保留15%的硬盘空间不进行分区。
4、MySQL推荐参数设置
1、innodb_write_io_threads/ innodb_read_io_threads推荐设置为8
2、innodb_log_file_size推荐设置为2048M
3、innodb_io_capacity推荐设置为3000
4、innodb_max_dirty_pages_pct设置为75
欢迎关注京东商城基础平台部公众号
来源:oschina
链接:https://my.oschina.net/u/4301815/blog/4345571