簡(jiǎn)介
??ceph作為一個(gè)成熟的分布式存儲(chǔ)系統(tǒng)可以提供對(duì)象豁状,塊诗力,文件三種形態(tài)的存儲(chǔ)。它內(nèi)部不僅提供了很多測(cè)試用例還有很多measure性能的工具官疲,此文便用來記錄關(guān)于ceph性能的測(cè)試工具搂漠。
OSD性能測(cè)試
在有些文章看到有人使用 [dd if=/dev/zero of=/var/lib/ceph/ceph-xx/test bs=1M count=1024] 這種方式來測(cè)試OSD的性能迂卢。這種做法顯然代替不了該OSD的性能,只能測(cè)試出該OSD所屬次盤的data分區(qū)文件系統(tǒng)的性能状答。該命令所產(chǎn)生的IO是直接進(jìn)入了XFS文件系統(tǒng)了冷守,而我們期待的是通過librados進(jìn)入OSD,在進(jìn)入FileStore/BlueStore再進(jìn)入磁盤的性能,所以該做法不合理惊科,不過社區(qū)為我們提供了一種測(cè)試工具可以滿足我們的需求。
COMMAND("bench " \
"name=count,type=CephInt,req=false " \
"name=size,type=CephInt,req=false " \
"name=object_size,type=CephInt,req=false " \
"name=object_num,type=CephInt,req=false ", \
"OSD benchmark: write <count> <size>-byte objects, " \
"(default 1G size 4MB). Results in log.",
"osd", "rw", "cli,rest”)
最簡(jiǎn)單的用法就是使用默認(rèn)值(default count 1G size 4MB):
ceph tell osd.0 bench
{
"bytes_written": 1073741824,
"blocksize": 4194304,
"elapsed_sec": 7.919381,
"bytes_per_sec": 135584059.016932,
"iops": 32.325759
}
當(dāng)然也可以按照代碼里面的說明亮钦,自己定義count size等
存儲(chǔ)池性能測(cè)試
對(duì)于存儲(chǔ)池的測(cè)試我們可以用rados bench
rados bench -p <pool_name> <seconds> <write|seq|rand> -b <block size> -t --no-cleanup
pool_name:測(cè)試所針對(duì)的存儲(chǔ)池
seconds:測(cè)試所持續(xù)的秒數(shù)
<write|seq|rand>:操作模式馆截,write:寫,seq:順序讀蜂莉;rand:隨機(jī)讀
-b:block size蜡娶,即塊大小,默認(rèn)為 4M
-t:讀/寫并行數(shù)映穗,默認(rèn)為 16
--no-cleanup 表示測(cè)試完成后不刪除測(cè)試用數(shù)據(jù)窖张。在做讀測(cè)試之前,需要使用該參數(shù)來運(yùn)行一遍寫測(cè)試來產(chǎn)生測(cè)試數(shù)據(jù)蚁滋,在全部測(cè)試結(jié)束后可以運(yùn)行 rados -p <pool_name> cleanup 來清理所有測(cè)試數(shù)據(jù)宿接。
舉例(測(cè)試運(yùn)行600s, 4M的塊大小,64線程辕录,不刪除測(cè)試用數(shù)據(jù)):
rados bench -p cephfs_data 600 write -b 4M -t 64 --no-cleanup
2019-09-10 01:26:35.468525 min lat: 0.763155 max lat: 4.25305 avg lat: 1.28744
sec Cur ops started finished avg MB/s cur MB/s last lat(s) avg lat(s)
20 63 999 936 187.166 156 1.50761 1.28744
21 63 1033 970 184.726 136 1.68059 1.30101
22 63 1074 1011 183.781 164 1.4625 1.31952
23 63 1110 1047 182.05 144 1.48224 1.3306
24 63 1164 1101 183.462 216 1.03243 1.3374
25 63 1212 1149 183.802 192 1.14344 1.33257
26 63 1252 1189 182.886 160 1.40288 1.33673
27 63 1306 1243 184.111 216 0.966673 1.33462
28 63 1350 1287 183.82 176 1.13416 1.33445
29 63 1404 1341 184.929 216 2.22456 1.33388
...
583 63 21582 21519 147.616 144 1.49628 1.73058
584 63 21615 21552 147.589 132 1.46498 1.73047
585 63 21654 21591 147.603 156 1.60935 1.73044
586 63 21684 21621 147.556 120 4.90418 1.73069
587 63 21718 21655 147.537 136 1.8161 1.73109
588 63 21761 21698 147.578 172 1.38556 1.73121
589 63 21814 21751 147.687 212 1.01166 1.7305
590 63 21870 21807 147.817 224 1.043 1.72912
591 63 21912 21849 147.851 168 1.24735 1.72799
592 63 21946 21883 147.831 136 2.59074 1.72769
593 63 21989 21926 147.871 172 1.49615 1.72771
594 63 22025 21962 147.865 144 1.48981 1.72769
595 63 22080 22017 147.986 220 1.02077 1.72669
596 63 22124 22061 148.033 176 1.31879 1.72591
597 63 22156 22093 147.999 128 1.76057 1.72574
598 63 22191 22128 147.986 140 1.53567 1.72587
599 63 22230 22167 147.999 156 1.45891 1.72583
2019-09-10 01:36:15.575884 min lat: 0.754678 max lat: 11.0531 avg lat: 1.7257
sec Cur ops started finished avg MB/s cur MB/s last lat(s) avg lat(s)
600 64 22263 22199 147.966 128 1.49292 1.7257
Total time run: 601.098917
Total writes made: 22263
Write size: 4194304
Object size: 4194304
Bandwidth (MB/sec): 148.149
Stddev Bandwidth: 39.3063
Max bandwidth (MB/sec): 272
Min bandwidth (MB/sec): 0
Average IOPS: 37
Stddev IOPS: 9
Max IOPS: 68
Min IOPS: 0
Average Latency(s): 1.7269
Stddev Latency(s): 0.797885
Max latency(s): 11.0531
Min latency(s): 0.754678