ceph 压力测试
[TOC]
ceph 壓力測試報(bào)告
此文檔最新版本地址
概述
對ceph文件集群進(jìn)行性能測試, 以確認(rèn)滿足我們業(yè)務(wù)需求. 此次測試主要測試S3接口讀寫文件性能.
測試環(huán)境
網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)
如下圖, client和三臺OSD集群在同一個(gè)內(nèi)網(wǎng), 每臺OSD機(jī)器上, 分別裝有MON和RGW. 測試時(shí)同時(shí)使用多個(gè)RGW, 由客戶端控制將請求分發(fā)到不同RGW服務(wù). 因部署遺留原因, 三臺OSD機(jī)器編號從2開始, 分別是 DFS2, DFS3, DFS4.
軟硬件環(huán)境
OSD服務(wù)器
| DFS2 | Intel Core i7-4790@ 3.60GHz 四核八線程 8G DDR3內(nèi)存 1T 7200轉(zhuǎn)硬盤, 1000M網(wǎng)口 | centos 7.2, ceph 10.2.2 |
| DFS3 | Intel Core i7-4790@ 3.60GHz 四核八線程 8G DDR3內(nèi)存 1T 7200轉(zhuǎn)硬盤, 1000M網(wǎng)口 | centos 7.2, ceph 10.2.2 |
| DFS4 | Intel Core i7-4790@ 3.60GHz 四核八線程 16G DDR3內(nèi)存 1T 7200轉(zhuǎn)硬盤, 1000M網(wǎng)口 | centos 7.2, ceph 10.2.2 |
測試客戶端服務(wù)器
| 10.141.5.63 | 雙核 Intel Xeon CPU E7- 4850 @ 2.00GHz, 4G內(nèi)存, 1000M網(wǎng)口 | centos 6.8, java 1.7.0_79 |
| 10.141.4.83 | 四核 Intel(R) Xeon(R) CPU E5-2658 v2 @ 2.40GHz, 8G內(nèi)存, 1000M網(wǎng)口 | centos 6.7, java 1.8.0_92 |
測試軟件
基于aws api自己寫的 java 客戶端. 另外, 有推薦 cosbench 的. 以后可以看看.
maven依賴:
<dependency><groupId>com.amazonaws</groupId><artifactId>aws-java-sdk-s3</artifactId><version>1.9.0</version> </dependency>壓測數(shù)據(jù)
注意: 壓測過程中, index副本數(shù)設(shè)置為1, 會(huì)比默認(rèn)的3效率高些.
中等文件寫入壓測
測試內(nèi)容: 文件大小95M,上傳50次
在客戶端5個(gè)線程,20個(gè)線程,50個(gè)線程 3種情況下得出數(shù)據(jù):
1個(gè)副本 1個(gè)RGW
| 5 | 75.731 | 62.96 | 0.66 |
| 20 | 65.947 | 72.306 | 0.758 |
| 50(一條請求超時(shí)) | 83.37 | 57.195 | 0.5997 |
| 數(shù)據(jù)簡單分析: |
- 最高寫入速度也在70 M/s左右.
- 三臺OSD中的兩臺磁盤io幾乎達(dá)到100%, 一臺在90%左右. 磁盤成為性能瓶頸.
- 線程數(shù)過多(50), 性能不升反降, 還會(huì)有超時(shí)現(xiàn)象.
2個(gè)副本 1個(gè)RGW
| 5 | 139.247 | 34.2439 | 0.359 |
| 20 | 147.913 | 32.237 | 0.338 |
| 50 | 138.832 | 34.346 | 0.360 |
數(shù)據(jù)簡單分析: 瓶頸與1個(gè)副本1個(gè)RGW類似, 瓶頸在磁盤io. 兩個(gè)副本最大寫入速度在35M/s左右.
3個(gè)副本 1個(gè)RGW
| 1 | 223.859 | 21.30 | 0.223 |
| 5 | 227.563 | 20.954 | 0.2197 |
| 20 | 234.088 | 20.37 | 0.21359 |
數(shù)據(jù)簡單分析: 瓶頸與1個(gè)副本1個(gè)RGW類似, 瓶頸在磁盤io. 三個(gè)副本最大寫入速度在30M/s左右.
小文件寫入壓測
測試內(nèi)容: 文件大小30 000字節(jié),上傳5000次
客戶端在啟用20個(gè)線程,100個(gè)線程,200個(gè)線程 3種情況下得出數(shù)據(jù):
設(shè)置了 index 分片為16. 默認(rèn)index不分片, 會(huì)造成寫索引時(shí)單臺OSD成為瓶頸, 磁盤io占滿(大約每秒寫30個(gè)對象).
兩個(gè)副本, 1個(gè)RGW
| 20 | 52.426 | 2.796 | 95.37 |
| 100 | 34.78 | 4.2158 | 143.76 |
| 200 | 34.417 | 4.26 | 145.277 |
資源占用 dstat信息:
20個(gè)線程:
100個(gè)線程:
200個(gè)線程:
磁盤占用 iostat信息:
20個(gè)線程:
100個(gè)線程:
200個(gè)線程:
數(shù)據(jù)簡單分析:
- 最高文件上傳速度在每秒145個(gè)文件左右. 從20個(gè)線程到100個(gè)線程過程中, 寫入速度明顯提升; 100個(gè)線程后, 達(dá)到峰值.
- 在壓測過程中, 系統(tǒng)CPU占用很低. 從20個(gè)線程增長到200個(gè)線程, CPU占用增長不明顯, 系統(tǒng)空閑CPU一直維持在80%以上.
- 到100個(gè)線程以后, 磁盤 io 占用率達(dá)到100%, 成為系統(tǒng)瓶頸. 盡管寫入量并不大, 但是因?yàn)榇罅啃∥募?dǎo)致大量寫入, 使磁盤時(shí)間占滿.
- 客戶端在線程少的情況下, 不足以達(dá)到最高吞吐量.
單副本, 1個(gè)RGW
| 20 | 41.833 | 3.505 | 119.523 |
| 100 | 30.929 | 4.741 | 161.66 |
| 200 | 40.984 | 3.577 | 122 |
數(shù)據(jù)簡單分析:
- 系統(tǒng)占用情況和磁盤占用情況和兩個(gè)副本時(shí)相似, 這里省略.
- 單副本最高文件寫入速度在每秒160個(gè)左右. 從客戶端20個(gè)線程到100個(gè)線程過程增長明顯, 100個(gè)線程達(dá)到峰值, 從100到200之間有下降趨勢.
- 在200個(gè)線程時(shí), 比100個(gè)線程速度要下降. 再數(shù)據(jù)出來以后又測試了多次, 200個(gè)線程一般和100個(gè)線程速度持平. 這個(gè)數(shù)據(jù)是一個(gè)特例.
- 和兩個(gè)副本相比, 因?yàn)橐环輸?shù)據(jù)不需要保存兩份到不同機(jī)器上, 減少了了網(wǎng)絡(luò)和磁盤開銷. 導(dǎo)致速度要比兩個(gè)副本快.
三個(gè)副本, 1個(gè)RGW
| 20 | 74.018 | 1.98 | 67.55 |
| 100 | 47.283 | 3.101 | 105.746 |
| 200 | 45.983 | 3.1887 | 108.7 |
- 系統(tǒng)占用情況和磁盤占用情況和兩個(gè)副本時(shí)相似, 這里省略.
- 三個(gè)副本情況下, 最高文件寫入速度在每秒105個(gè)左右. 從客戶端20個(gè)線程到100個(gè)線程過程中, 增長明顯; 100個(gè)線程達(dá)到峰值; 超過100個(gè)線程, 寫入速度保持在105個(gè)左右.
- 和兩個(gè)副本相比, 因?yàn)橐环輸?shù)據(jù)需要保存到三臺機(jī)器上, 增大了網(wǎng)絡(luò)和磁盤開銷. 導(dǎo)致速度要比兩個(gè)副本慢.
大文件讀取壓測
因文件讀取耗費(fèi)大量CPU, 所以使用83測試機(jī), 不讓客戶端配置成為性能瓶頸.
壓測方式: 上傳30個(gè)100M的文件, 下載時(shí)隨機(jī)選取文件下載.
三個(gè)副本, 1個(gè)RGW
| 20 | 44.875 | 1.1142 | 106.259 |
| 100 | 44.286 | 1.129 | 107.672 |
| 200 | 44.4 | 1.126 | 107.395 |
內(nèi)存占用 free -g:
[root@dfs2 ~]# free -gtotal used free shared buff/cache available Mem: 7 1 2 0 3 5 Swap: 7 0 7磁盤占用 iostat:
Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sda 0.00 2.00 0.00 3.00 0.00 0.02 16.00 0.03 10.50 0.00 10.50 10.50 3.15 dm-0 0.00 0.00 0.00 4.00 0.00 0.02 12.00 0.03 7.88 0.00 7.88 7.88 3.15 dm-1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sda 0.00 2.00 0.00 6.00 0.00 0.03 10.67 0.06 10.17 0.00 10.17 10.17 6.10 dm-0 0.00 0.00 0.00 6.00 0.00 0.03 10.67 0.06 10.50 0.00 10.50 10.17 6.10 dm-1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00系統(tǒng)資源占用 dstat:
數(shù)據(jù)簡單分析:
- 大文件讀取, 單個(gè)rgw, 最高在107M左右. 從客戶端20線程增加到200線程, 讀取速度增長不明顯.
- 內(nèi)存還有足夠余量, 磁盤io占用也不高.
- 從系統(tǒng)資源占用上來看, RGW所在機(jī)器網(wǎng)卡接收和發(fā)送已經(jīng)達(dá)到114M/s左右, 1000M網(wǎng)卡理論最快速度在 1000M bit/8 = 125M 每秒. 所以可以認(rèn)為網(wǎng)卡已經(jīng)跑滿, 瓶頸在1000M網(wǎng)卡上.
一個(gè)副本, 1個(gè)RGW
兩個(gè)副本, 1個(gè)RGW
| 20 | 44.663 | 1.119 | 106.763 |
| 100 | 43.932 | 1.138 | 108.5398 |
| 200 | 43.961 | 1.137 | 108.468 |
數(shù)據(jù)簡單分析:
- 數(shù)據(jù)和三個(gè)副本下情況相似. 瓶頸在網(wǎng)卡上.
小文件讀取壓測
壓測方式: 上傳100 000個(gè)小文件, 下載時(shí)隨機(jī)選取文件下載, 下載100000次.
| 20 | 30.437 | 3285.4749 | 96.347 |
| 100 | 28.186 | 3547.86 | 104.04 |
| 200 | 28.578 | 3499.19 | 102.61 |
rgw機(jī)器內(nèi)存占用情況.
[root@dfs2 ~]# free -gtotal used free shared buff/cache available Mem: 7 1 0 0 6 5 Swap: 7 0 7rgw機(jī)器, 磁盤占用情況
[root@dfs2 ~]# iostat -mdx 2 Linux 3.10.0-327.22.2.el7.x86_64 (dfs2) 08/29/2016 _x86_64_ (8 CPU)Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sda 0.01 3.09 1.06 13.40 0.14 0.56 98.73 0.51 35.16 4.11 37.63 7.69 11.13 dm-0 0.00 0.00 1.07 13.96 0.14 0.56 94.99 0.76 50.65 4.26 54.21 7.41 11.13 dm-1 0.00 0.00 0.00 0.04 0.00 0.00 8.05 0.00 21.78 5.51 22.67 0.71 0.00Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sda 0.00 5.50 0.00 10.00 0.00 0.08 17.20 0.10 10.40 0.00 10.40 10.40 10.40 dm-0 0.00 0.00 0.00 12.50 0.00 0.08 13.76 0.11 8.56 0.00 8.56 8.32 10.40 dm-1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00RGW機(jī)器資源占用情況 dstat:
----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system-- usr sys idl wai hiq siq| read writ| recv send| in out | int csw 18 7 74 0 0 2| 0 108k| 78M 116M| 0 0 | 29k 191k18 6 73 0 0 2| 0 116k| 76M 115M| 0 0 | 29k 191k18 6 74 0 0 2| 0 48k| 77M 116M| 0 0 | 30k 189k18 6 74 0 0 2| 0 36k| 80M 116M| 0 0 | 30k 189數(shù)據(jù)簡單分析:
- 小文件讀取速度可達(dá)每秒100M, 每秒可以讀取3500個(gè)大約3K的文件. //TODO 內(nèi)存策略? 這些數(shù)據(jù)已經(jīng)緩存到內(nèi)存中?
- 從硬件使用情況來看, 讀取瓶頸在1000M網(wǎng)口上.
硬盤參數(shù)優(yōu)化, 寫入壓測(nobarrier)
開啟/關(guān)閉 xfs nobarrier 參數(shù):
# 開啟 mount -o remount,nobarrier {/dev/mapper/cl_bogon-root} {/} # 關(guān)閉 mount -o remount,barrier {/dev/mapper/cl_bogon-root} {/}壓測數(shù)據(jù):
副本數(shù)為3, index分片為8, 分別在barrier和nobarrier上傳文件:
barrier 文件大小30k, 上傳5000次
| 1 | 225.018 | 0.65 | 22.22 |
| 20 | 55.719 | 2.63 | 89.7 |
| 100 | 46.484 | 3.154 | 107.56 |
nobarrier 文件大小30k, 上傳5000次
| 1 | 48.147 | 3.045 | 103.848 |
| 20 | 11.237 | 13.0486 | 444.958 |
| 100 | 9.969 | 14.708 | 501.55 |
barrier 文件大小100M, 上傳50次
| 1 | 223.859 | 21.30 | 0.223 |
| 5 | 227.563 | 20.954 | 0.2197 |
| 20 | 234.088 | 20.37 | 0.21359 |
nobarrier 文件大小100M, 上傳50次
| 1 | 144.14 | 33.08 | 0.3468 |
| 5 | 135.583 | 35.169 | 0.3687 |
| 20 | 141.82 | 33.62 | 0.3525 |
數(shù)據(jù)簡單分析:
- 關(guān)閉 xfs文件系統(tǒng) barrier 選項(xiàng)以后, 使小文件寫入性能提升5倍左右. 效果非常可觀. 100M左右文件, 性能提升為以前的1.65倍左右(網(wǎng)卡還沒跑滿, 瓶頸在磁盤io).
- 官方雖然不建議關(guān)閉nobarrier選項(xiàng), 但是我們有數(shù)據(jù)多機(jī)器寫入多個(gè)副本. 但是存在OSD機(jī)器在一個(gè)機(jī)房, 當(dāng)遭遇同一機(jī)房停電情況, 數(shù)據(jù)就會(huì)損壞的極端情況. 這個(gè)視具體情況而定. 如果寫入確實(shí)是系統(tǒng)瓶頸, 則建議使用nobarrier選項(xiàng). 也可以臨時(shí)不使用nobarrier選項(xiàng), 當(dāng)達(dá)到性能瓶頸以后, 再使用.
壓測總結(jié)
轉(zhuǎn)載于:https://my.oschina.net/u/1169457/blog/740819
總結(jié)
- 上一篇: 三星SCX-4521F 如何清洁搓纸轮?
- 下一篇: 虚拟仿真测试介绍(9):硬件在环(HIL