MariaDB·社群動態·MariaDBonPower8(下)

db匠發表於2016-05-23

背景

上一期月報MariaDB on Power8我介紹了下 MariaDB 為 Power 處理器所做的一些優化,但是並沒有給出實際測試的效果,這次月報我們借到了一臺Power8的機器,有機會親自試一把 MariaDB 在 Power 上的表現。

環境

一切不交代測試場景的Benchmark都是Benchmarketing。

因為Power和Intel之間對標的CPU型號我無法得知,因此這個測試僅僅用來觀察MariaDB/MySQL在Power和Intel之間一些特質的差異,而非效能的直接對比。

Power 這邊我們拿到的是 PowerVM 虛擬化的32核Power8機器,Intel這邊用的是我們日常測試的E5-2630機型,虛擬機器 vs 物理機,兩者的價格我也沒有資料,所以不要直接對比效能,不要直接對比效能,不要直接對比效能!

Power戰隊

處理器規格:

processor	: 0
cpu		: POWER8 (architected), altivec supported
clock		: 3425.000000MHz
revision	: 2.1 (pvr 004b 0201)

處理器核數:

[root@plx sysbench]# cat /proc/cpuinfo  | grep processor | wc -l
32

記憶體:

[root@plx sysbench]# free -g
              total        used        free      shared  buff/cache   available
Mem:             30           7           3           0          19          22
Swap:            15           0          15

Intel戰隊

處理器規格:

processor	: 0
vendor_id	: GenuineIntel
cpu family	: 6
model		: 45
model name	: Intel(R) Xeon(R) CPU E5-2630 0 @ 2.30GHz
stepping	: 7
cpu MHz		: 2294.709
cache size	: 15360 KB
physical id	: 0
siblings	: 12
core id		: 0
cpu cores	: 6
apicid		: 0
initial apicid	: 0
fpu		: yes
fpu_exception	: yes
cpuid level	: 13
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 sse4_2 x2apic popcnt aes xsave avx lahf_lm arat epb xsaveopt pln pts dts tpr_shadow vnmi flexpriority ept vpid
bogomips	: 4589.41
clflush size	: 64
cache_alignment	: 64
address sizes	: 46 bits physical, 48 bits virtual
power management:

處理器核數:

$cat /proc/cpuinfo  | grep processor | wc -l
24

記憶體:

$free -g
             total       used       free     shared    buffers     cached
Mem:           189         53        135          0          0          2
-/+ buffers/cache:         50        138
Swap:            1          0          1

CPU理論效能測試

首先我們用sysbench簡單測試下CPU的計算能力。

測試命令:

sysbench --test=cpu --cpu-max-prime=20000 --num-threads=$num run

我在每個平臺上至少執行了3次測試,只有連續三次測試結果差異極小的時候,才認為最後一次測試結果有效。因為Power8是一臺虛擬機器,並不能保證宿主機任何時候都只有我在用。

下面是原始測試資料的表格:

Power CPU理論測試

執行緒 總耗時(s) 平均延時(ms) 95%延時(ms)
1 201.67 20.17 20.19
4 66.61 26.64 33.18
8 59.90 47.90 106.78
16 49.18 78.62 119.75
32 37.37 119.36 119.86
64 37.37 237.32 349.90
128 37.38 469.16 619.61
512 37.38 1671.31 2179.63

Intel CPU理論測試

執行緒 總耗時(s) 平均延時(ms) 95%延時(ms)
1 827.08 82.71 83.02
4 206.97 82.77 83.24
8 103.45 82.72 83.14
16 60.02 95.96 114.39
32 47.52 151.89 230.74
64 47.53 303.26 350.64
128 47.53 604.46 695.92
512 47.53 2360.40 2759.46

CPU理論效能對比

(注:比值指的是相同執行緒數下,Intel耗時是Power的多少倍)

執行緒 Power總耗時(s) Intel總耗時(s) 比值
1 201.67 827.08 4.10
4 66.61 206.97 3.11
8 59.90 103.45 1.73
16 49.18 60.02 1.22
32 37.37 47.52 1.27
64 37.37 47.53 1.27
128 37.38 47.53 1.27
512 37.38 47.53 1.27

從上面三個圖我們可以總結一些硬體上的特性:

  • 單核心效率Power要高於Intel。3.425GHz 的 Power8 耗時是 2.6GHZ 的 E5-2630 的 1/4,CPU頻率只有1.3倍的差異;
  • 併發足夠高時,效能差異並沒有那麼大,耗時穩定在1.27倍左右。而核心數Power也是Intel的1.33倍。

場景

本次測試共有三種場景:

  • MariaDB 10.1.10 on Power
  • MariaDB 10.1.10 on Intel
  • RDS MySQL 5.6.16 on Intel

為何沒有 MySQL on Power 呢,因為編譯不過。。。

Buffer Pool全部為16G,資料檔案大小為8G上下,保證資料可以全部載入記憶體。

測試命令:

./sysbench --db-dirver=mysql --mysql-host=127.0.0.1 --mysql-port=3001 --mysql-user=root --test=tests/db/select.lua  --mysql-table-engine=innodb --oltp-table-size=500000  --oltp-tables-count=64 --max-time=1800 --max-requests=2000000000 --num-threads=$num run

為什麼只測讀?因為Power主機和Intel主機上使用的硬碟不一樣,HDD vs. SDD,測寫就完全沒有意義了,HDD會被SSD吊打。

因為做過PREPARE之後就直接開測,沒有關過MySQL,因此測試時資料都是在記憶體中的,不會產生物理IO。

下面是測試結果原始資料的表格:
(注:TPS變動比例指當前執行緒數下的TPS相對於上一輪測試的TPS的比值)

MariaDB on Power

執行緒 TPS 平均耗時(ms) 95%耗時(ms) TPS變動比例
1 14279.19 0.07 0.08
4 41563.43 0.09 0.12 291.08%
8 63601.75 0.12 0.18 153.02%
16 94346.29 0.17 0.23 148.34%
32 119444.32 0.26 0.45 126.60%
64 129451.95 0.49 0.82 108.38%
128 123414.89 1.03 1.75 95.34%
256 112408.11 2.27 4.00 91.08%
512 113163.74 4.52 8.59 100.67%
768 105875.56 7.24 15.53 93.56%

RDS MySQL on Intel

執行緒 TPS 平均耗時(ms) 95%耗時(ms) TPS變動比例
1 10742.70 0.09 0.11
4 40061.40 0.10 0.12 372.92%
8 68544.88 0.12 0.14 171.10%
16 109659.96 0.14 0.16 159.98%
32 149450.12 0.21 0.39 136.29%
64 145596.26 0.44 0.75 97.42%
128 139679.85 0.91 4.96 95.94%
256 141907.18 1.80 11.73 101.59%
512 61794.87 8.28 25.79 43.55%

MariaDB on Intel

執行緒 TPS 平均耗時(ms) 95%耗時(ms) TPS變動比例
1 9673.51 0.10 0.12
4 37394.20 0.11 0.13 386.56%
8 47347.03 0.17 0.19 126.62%
16 107496.94 0.15 0.18 227.04%
32 140805.33 0.22 0.35 130.99%
64 137045.70 0.46 0.66 97.33%
128 138472.96 0.92 0.36 101.04%
256 134908.32 1.90 7.23 97.43%
512 131814.55 3.88 19.04 97.71%

下面是對比的表格:

MySQL vs MariaDB on Intel

(注:變化率是指MariaDB的數值相對於MySQL的數值的比值的百分比)

執行緒 MySQL TPS 平均耗時(ms) 95%耗時(ms) MariaDB TPS 平均耗時(ms) 95%耗時(ms) TPS變化率 平均延時變化率 95%延時變化率
1 10742.70 0.09 0.11 9673.51 0.10 0.12 90.05% 111.11% 109.09%
4 40061.40 0.10 0.12 37394.20 0.11 0.13 93.34% 110.00% 108.33%
8 68544.88 0.12 0.14 47347.03 0.17 0.19 69.07% 141.67% 135.71%
16 109659.96 0.14 0.16 107496.94 0.15 0.18 98.03% 107.14% 112.50%
32 149450.12 0.21 0.39 140805.33 0.22 0.35 94.22% 104.76% 89.74%
64 145596.26 0.44 0.75 137045.70 0.46 0.66 94.13% 104.55% 88.00%
128 139679.85 0.91 4.96 138472.96 0.92 0.36 99.14% 101.10% 7.26%
256 141907.18 1.80 11.73 134908.32 1.90 7.23 95.07% 105.56% 61.64%
512 61794.87 8.28 25.79 131814.55 3.88 19.04 213.31% 46.86% 73.83%

MariaDB on Intel vs Power

(注:變化率是指Power平臺的數值相對於Intel平臺的數值的比值的百分比)

執行緒 Intel TPS 平均耗時(ms) 95%耗時(ms) Power TPS 平均耗時(ms) 95%耗時(ms) TPS變化率 平均延時變化率 95%延時變化率
1 9673.51 0.10 0.12 14279.19 0.07 0.08 147.61% 70.00% 66.67%
4 37394.20 0.11 0.13 41563.43 0.09 0.12 111.15% 81.82% 92.31%
8 47347.03 0.17 0.19 63601.75 0.12 0.18 134.33% 70.59% 94.74%
16 107496.94 0.15 0.18 94346.29 0.17 0.23 87.77% 113.33% 127.78%
32 140805.33 0.22 0.35 119444.32 0.26 0.45 84.83% 118.18% 128.57%
64 137045.70 0.46 0.66 129451.95 0.49 0.82 94.46% 106.52% 124.24%
128 138472.96 0.92 0.36 123414.89 1.03 1.75 89.13% 111.96% 486.11%
256 134908.32 1.90 7.23 112408.11 2.27 4.00 83.32% 119.47% 55.33%
512 131814.55 3.88 19.04 113163.74 4.52 8.59 85.85% 116.49% 45.12%

這個測試結果跟上一篇月報中IBM給出的官方測試對比有很大差異。

我們就來看看這些測試結果反映了些什麼問題:

  • 如果只看 MariaDB on Power 和 MySQL on Intel 的結果,我會以為 Power 在高併發時效能更穩定,但看了 MariaDB on Intel 的測試結果之後,意識到這是 MariaDB Thread Pool 的功勞,並不是Power平臺的優勢;
  • 對比 MySQL on Intel 和 MariaDB on Intel 可以明顯的看到,16併發和256併發是明顯的分水嶺,16併發之前MySQL優勢明顯,16併發到256併發之間兩者差距不大,256併發之後,MariaDB完爆MySQL;
  • 看 MariaDB 在 Power 和 Intel 平臺下的表現,16併發之前 Power 優勢會明顯一點,16併發之後 Intel 就追上來了並且超越了 Power。這跟我們上面做的 CPU 理論測試結果差不多,大家可以上去翻表格,16執行緒之前 Power 效率要高於 Intel,但是之後基本就穩定了;
  • 所以,官方的Benchmark永遠不可靠,自己動手才是硬道理。


相關文章