轉 談談我用過的性能測試工具
一些性能指標
性能測試包括不少方面。目前爲止,我所作的性能測試包括雲平臺虛擬機的各項性能測試和 Ceph 平臺的性能測試。html
對於虛擬機,性能指標通常包括:前端
- 網絡性能:不一樣宿主機上兩臺虛擬機之間的網絡帶寬;
- 磁盤性能:虛擬機磁盤讀寫的 IOPS、帶寬等性能;
- CPU 性能:虛擬機得到的 CPU 性能;
- 內存性能:虛擬機得到的內存性能。
對於 Ceph 平臺,性能指標通常包括:ios
- 吞吐率:平臺平均每秒處理的請求數;
- 響應時間:平臺每一個成功請求的平均響應時間;
- 支持最大併發:平臺可以承受的最大併發數。
虛擬機性能測試
網絡性能
iperf/iperf3 是一個用於測試網絡可實現的最大帶寬的工具。git
將其中一臺虛擬機做爲 iperf 的服務端,另外一臺虛擬機做爲 iperf 的客戶端,能夠測試兩臺虛擬機之間的網絡帶寬。這兩臺虛擬機應運行在不一樣的宿主機上,不然,測試數據是無心義的。github
在服務端執行:web
# iperf -s
在客戶端執行:shell
# iperf -c 192.168.0.14
在這個測試過程當中,除了測試兩臺虛擬機之間的帶寬,還能夠繼續測試虛擬機和宿主機之間、兩臺宿主機之間的帶寬,做爲一個數據比較。apache
測試內容 | 虛擬機之間 | 虛擬機與宿主機之間 | 宿主機之間 |
---|---|---|---|
內網帶寬 |
對比虛擬機之間、虛擬機與宿主機之間、宿主機之間的帶寬,能夠粗略計算出虛擬機網絡性能的損耗:編程
網絡性能損耗 = (宿主機之間的帶寬 - 虛擬機之間的帶寬)/宿主機之間的帶寬 * 100%
磁盤性能
fio 是一個可用與測試磁盤 I/O、帶寬等性能的工具。它能夠支持 19 種不一樣的 I/O 引擎。數組
爲虛擬機掛載一個 vdb 磁盤,在虛擬機中運行 fio 測試,能夠獲取磁盤的性能數據:
# fio -name="FIO with bs, iodepth, rw" -ioengine=libaio -direct=1 -thread -filename=/dev/vdb -time_based -runtime=30 -bs=4K -iodepth=64 -rw=read
FIO with bs, iodepth, rw: (g=0): rw=read, bs=4K-4K/4K-4K/4K-4K, ioengine=libaio, iodepth=64
fio-2.1.10
Starting 1 thread
Jobs: 1 (f=1): [R] [100.0% done] [124.5MB/0KB/0KB /s] [31.9K/0/0 iops] [eta 00m:00s]
FIO with bs, iodepth, rw: (groupid=0, jobs=1): err= 0: pid=5847: Wed May 25 06:27:34 2016
read : io=3737.5MB, bw=127568KB/s, iops=31892, runt= 30001msec
slat (usec): min=2, max=704, avg= 6.28, stdev= 4.08
clat (usec): min=384, max=202560, avg=1998.49, stdev=1644.33
lat (usec): min=695, max=202564, avg=2005.03, stdev=1644.28
clat percentiles (usec):
| 1.00th=[ 1832], 5.00th=[ 1864], 10.00th=[ 1880], 20.00th=[ 1896],
| 30.00th=[ 1928], 40.00th=[ 1944], 50.00th=[ 1976], 60.00th=[ 1976],
| 70.00th=[ 1992], 80.00th=[ 2008], 90.00th=[ 2064], 95.00th=[ 2096],
| 99.00th=[ 2896], 99.50th=[ 2960], 99.90th=[ 3376], 99.95th=[ 3600],
| 99.99th=[ 7776]
bw (KB /s): min=85476, max=131136, per=100.00%, avg=127763.93, stdev=6383.98
lat (usec) : 500=0.01%, 750=0.01%, 1000=0.01%
lat (msec) : 2=72.54%, 4=27.44%, 10=0.01%, 250=0.01%
cpu : usr=10.75%, sys=26.19%, ctx=184651, majf=0, minf=70
IO depths : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=0.1%, >=64=100.0%
submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.1%, >=64=0.0%
issued : total=r=956795/w=0/d=0, short=r=0/w=0/d=0
latency : target=0, window=0, percentile=100.00%, depth=64
Run status group 0 (all jobs):
READ: io=3737.5MB, aggrb=127568KB/s, minb=127568KB/s, maxb=127568KB/s, mint=30001msec, maxt=30001msec
Disk stats (read/write):
vdb: ios=948055/0, merge=0/0, ticks=1815873/0, in_queue=1815559, util=96.65%
參數解釋:
- -ioengine:I/O 引擎,libaio 是 Linux 的原生異步 I/O 引擎;
- -direct:默認值是 false(0),若是設置爲 true(1),則繞過緩存;
- -filename:要測試的磁盤路徑;
- -runtime:要執行的測試時間,即測試時長;
- -time_based:即便已經完成讀/寫操做,也以 runtime 所設置的測試時間爲準,即直到 runtime 結束,才結束測試;
- -bs:block size,即 IO 大小;
- -iodepth:隊列深度;
- -rw:讀寫模式,有 read(順序讀)、write(順序寫)、randread(隨機讀)、randwrite(隨機寫) 等模式。
其中 iodepth 是一個可影響 iops 的參數。
對於上述測試結果,咱們須要關注的主要有幾個值:
- bw:I/O 帶寬;
- iops:每秒的 I/O 值,表示磁盤的 IO 速度。
通常狀況下,讀的速度應該比寫的速度快,隨機讀的速度應該比順序讀的速度快,順序寫的速度應該比隨機寫的速度快。
參考連接:
CPU 性能
UnixBench 是一個類 unix (Unix, BSD, Linux 等) 系統下的性能測試工具,它是一個開源工具。能夠用於測試系統主機的性能。
UnixBench 進行的測試不只僅是 CPU 的測試,其測試結果反映的是一臺主機的綜合性能。從理論上說,UnixBench 的測試結果與被測試主機的 CPU、內存、存儲、操做系統都有直接的關係,但受到 CPU 的影響更大一些。
所以,咱們採用 UnixBench 來測試虛擬機的 CPU 性能。
因爲性能與硬件有很大的關係,而虛擬機的 CPU 等設備由宿主機提供,那麼,理論上:虛擬機的性能不可能高於其宿主機的性能,若是在虛擬機上的測試結果與在宿主機上的測試結果接近,咱們將認爲虛擬機得到了良好的性能,資源獲得了充分的利用,而且能夠根據測試結果估計虛擬機的性能損耗。
UnixBench 測試項介紹
Dhrystone 2 using register variables
用於測試和比較計算機之間的性能。因爲該項測試中沒有浮點操做,它主要關注的是字符串處理,深受硬件和軟件設計、編譯和連接、代碼優化、內存 cache、等待狀態和整數數據類型的影響。
Double-Precision Whetstone
該項測試用於測量浮點操做的速度和效率。這項測試包含了幾個模塊,通常在科學應用中表現爲混合操做。其中有各類各樣的 C 函數,包括 sin, cos, sqrt, exp 以及 log,用於整數和浮點的數學運算、數組訪問、條件分支和程序調用。該項測試同時測量了整數和浮點的運算。
Execl Throughput
該項測試測量每秒可執行的 excel 調用次數。excel 是 exec 函數族的成員之一,它將當前處理的圖像替換爲新的圖像。它和其餘一些與之類似的命令都是 execve() 函數的前端。
File Copy
使用不一樣大小的緩衝區,測量從一個文件向另外一個文件傳輸數據的速率。對文件讀、寫、複製的操做進行測試,從而得到文件在特定時間內(默認是 10 秒)進行寫、讀和複製操做的字符數目。
Pipe Throughput
管道是進程交流中最簡單的一種方式。Pipe Throughput(管道吞吐量)是指進程(每秒)可以將 512 字節寫入管道並讀取返回的次數。可是,管道吞吐量在現實世界的編程中並無真正的對應。
Pipe-based Context Switching
該項測試測量兩個進程之間(每秒)經過管道交換一個不段增加的整數的次數。基於管道的上下文切換更像是一個真實的應用程序。這個測試程序建立一個子進程,再與這個子進程進行雙向管道傳輸。
Process Creation
該項測試測量一個進程能夠建立而後收回子進程的次數(子進程當即退出)。Process Creation 是指實際建立進程控制塊併爲新進程分配內存,所以這能夠直接測試內存帶寬。通常來講,這項測試用於比較操做系統進程建立調用的不一樣實現。
Shell Scripts
該項用於測試每分鐘內一個進程能夠併發地開始並得到一個 shell 腳本的 N 個拷貝的次數,N 取值爲 1, 2, 4, 8。這個腳本對一個數據文件進行一系列的變形操做。
System Call Overhead
該項估計進入和離開操做系統內核的成本,即進行系統調用的開銷。它由一個簡單的程序反覆調用系統調用函數 getpid (這將返回所調用進程的 id),執行這一調用的時間來估計進入和退出內核的成本。
Graphical Tests
能夠提供 2D 和 3D 圖形,目前,特別是 3D 套件是很是有限的,它由 「ubgears」 組成。這些測試的目的是提供很是粗略的 2D 和 3D 的圖形性能。可是,所報告的性能不只取決於硬件,還取決於系統中是否有合適的驅動。
分別在虛擬機和宿主機上執行 UnixBench 測試,比較其測試結果。
在虛擬機上測試
虛擬機的配置爲:
- CPU:2
- RAM:4G
- Size:40G
# ./Run -c 2
------------------------------------------------------------------------
Benchmark Run: 三 5月 25 2016 08:16:46 - 08:45:05
2 CPUs in system; running 2 parallel copies of tests
Dhrystone 2 using register variables 53711691.2 lps (10.0 s, 7 samples)
Double-Precision Whetstone 6692.9 MWIPS (9.9 s, 7 samples)
Execl Throughput 6031.8 lps (29.9 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 1403795.7 KBps (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 376258.7 KBps (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 3642184.2 KBps (30.0 s, 2 samples)
Pipe Throughput 2540389.1 lps (10.0 s, 7 samples)
Pipe-based Context Switching 474679.9 lps (10.0 s, 7 samples)
Process Creation 20435.8 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 3558.8 lpm (60.0 s, 2 samples)
Shell Scripts (8 concurrent) 898.1 lpm (60.2 s, 2 samples)
System Call Overhead 2876355.7 lps (10.0 s, 7 samples)
System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 53711691.2 4602.5
Double-Precision Whetstone 55.0 6692.9 1216.9
Execl Throughput 43.0 6031.8 1402.8
File Copy 1024 bufsize 2000 maxblocks 3960.0 1403795.7 3544.9
File Copy 256 bufsize 500 maxblocks 1655.0 376258.7 2273.5
File Copy 4096 bufsize 8000 maxblocks 5800.0 3642184.2 6279.6
Pipe Throughput 12440.0 2540389.1 2042.1
Pipe-based Context Switching 4000.0 474679.9 1186.7
Process Creation 126.0 20435.8 1621.9
Shell Scripts (1 concurrent) 42.4 3558.8 839.3
Shell Scripts (8 concurrent) 6.0 898.1 1496.8
System Call Overhead 15000.0 2876355.7 1917.6
========
System Benchmarks Index Score 1986.0
在宿主機上測試
# ./Run -c 2
... ...
------------------------------------------------------------------------
Benchmark Run: 三 5月 25 2016 17:01:49 - 17:29:58
12 CPUs in system; running 2 parallel copies of tests
Dhrystone 2 using register variables 53423747.2 lps (10.0 s, 7 samples)
Double-Precision Whetstone 6729.4 MWIPS (9.9 s, 7 samples)
Execl Throughput 6168.3 lps (30.0 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 1012659.8 KBps (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 267226.4 KBps (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 2948779.9 KBps (30.0 s, 2 samples)
Pipe Throughput 2910281.4 lps (10.0 s, 7 samples)
Pipe-based Context Switching 280195.1 lps (10.0 s, 7 samples)
Process Creation 19210.6 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 13061.9 lpm (60.0 s, 2 samples)
Shell Scripts (8 concurrent) 4714.9 lpm (60.0 s, 2 samples)
System Call Overhead 3105763.2 lps (10.0 s, 7 samples)
System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 53423747.2 4577.9
Double-Precision Whetstone 55.0 6729.4 1223.5
Execl Throughput 43.0 6168.3 1434.5
File Copy 1024 bufsize 2000 maxblocks 3960.0 1012659.8 2557.2
File Copy 256 bufsize 500 maxblocks 1655.0 267226.4 1614.7
File Copy 4096 bufsize 8000 maxblocks 5800.0 2948779.9 5084.1
Pipe Throughput 12440.0 2910281.4 2339.5
Pipe-based Context Switching 4000.0 280195.1 700.5
Process Creation 126.0 19210.6 1524.7
Shell Scripts (1 concurrent) 42.4 13061.9 3080.6
Shell Scripts (8 concurrent) 6.0 4714.9 7858.2
System Call Overhead 15000.0 3105763.2 2070.5
========
System Benchmarks Index Score 2293.0
比較虛擬機和宿主機的 CPU 性能,計算獲得性能損失爲 (2293.0 - 1986.0)/2293.0 * 100% = 13.39%
內存性能
mbw 用於測試可提供給用戶空間程序的內存拷貝帶寬,可用於測試內存性能,一般用來評估用戶層應用程序進行內存拷貝操做所可以達到的帶寬。
對虛擬機的內存性能測試與 CPU 測試同理,分別在虛擬機和宿主機上進行測試,對比測試結果,估計虛擬機的性能損失。
在虛擬機上測試
虛擬機配置:
- CPU:2
- RAM:4G
- Size:40G
# mbw 1024
Long uses 8 bytes. Allocating 2*134217728 elements = 2147483648 bytes of memory.
Using 262144 bytes as blocks for memcpy block copy test.
Getting down to business... Doing 10 runs per test.
0 Method: MEMCPY Elapsed: 0.41287 MiB: 1024.00000 Copy: 2480.200 MiB/s
1 Method: MEMCPY Elapsed: 0.41315 MiB: 1024.00000 Copy: 2478.489 MiB/s
2 Method: MEMCPY Elapsed: 0.41326 MiB: 1024.00000 Copy: 2477.853 MiB/s
3 Method: MEMCPY Elapsed: 0.41554 MiB: 1024.00000 Copy: 2464.287 MiB/s
4 Method: MEMCPY Elapsed: 0.41424 MiB: 1024.00000 Copy: 2472.015 MiB/s
5 Method: MEMCPY Elapsed: 0.41399 MiB: 1024.00000 Copy: 2473.496 MiB/s
6 Method: MEMCPY Elapsed: 0.41515 MiB: 1024.00000 Copy: 2466.572 MiB/s
7 Method: MEMCPY Elapsed: 0.41682 MiB: 1024.00000 Copy: 2456.702 MiB/s
8 Method: MEMCPY Elapsed: 0.41446 MiB: 1024.00000 Copy: 2470.709 MiB/s
9 Method: MEMCPY Elapsed: 0.41519 MiB: 1024.00000 Copy: 2466.335 MiB/s
AVG Method: MEMCPY Elapsed: 0.41447 MiB: 1024.00000 Copy: 2470.646 MiB/s
0 Method: DUMB Elapsed: 0.23104 MiB: 1024.00000 Copy: 4432.095 MiB/s
1 Method: DUMB Elapsed: 0.23022 MiB: 1024.00000 Copy: 4447.842 MiB/s
2 Method: DUMB Elapsed: 0.22887 MiB: 1024.00000 Copy: 4474.097 MiB/s
3 Method: DUMB Elapsed: 0.22884 MiB: 1024.00000 Copy: 4474.723 MiB/s
4 Method: DUMB Elapsed: 0.22805 MiB: 1024.00000 Copy: 4490.165 MiB/s
5 Method: DUMB Elapsed: 0.22869 MiB: 1024.00000 Copy: 4477.756 MiB/s
6 Method: DUMB Elapsed: 0.22887 MiB: 1024.00000 Copy: 4474.214 MiB/s
7 Method: DUMB Elapsed: 0.22998 MiB: 1024.00000 Copy: 4452.503 MiB/s
8 Method: DUMB Elapsed: 0.22911 MiB: 1024.00000 Copy: 4469.430 MiB/s
9 Method: DUMB Elapsed: 0.22924 MiB: 1024.00000 Copy: 4466.876 MiB/s
AVG Method: DUMB Elapsed: 0.22929 MiB: 1024.00000 Copy: 4465.911 MiB/s
0 Method: MCBLOCK Elapsed: 0.15273 MiB: 1024.00000 Copy: 6704.774 MiB/s
1 Method: MCBLOCK Elapsed: 0.15371 MiB: 1024.00000 Copy: 6661.939 MiB/s
2 Method: MCBLOCK Elapsed: 0.15403 MiB: 1024.00000 Copy: 6647.883 MiB/s
3 Method: MCBLOCK Elapsed: 0.15243 MiB: 1024.00000 Copy: 6718.058 MiB/s
4 Method: MCBLOCK Elapsed: 0.15372 MiB: 1024.00000 Copy: 6661.636 MiB/s
5 Method: MCBLOCK Elapsed: 0.15306 MiB: 1024.00000 Copy: 6690.012 MiB/s
6 Method: MCBLOCK Elapsed: 0.15303 MiB: 1024.00000 Copy: 6691.498 MiB/s
7 Method: MCBLOCK Elapsed: 0.15247 MiB: 1024.00000 Copy: 6716.207 MiB/s
8 Method: MCBLOCK Elapsed: 0.15254 MiB: 1024.00000 Copy: 6712.993 MiB/s
9 Method: MCBLOCK Elapsed: 0.15373 MiB: 1024.00000 Copy: 6660.942 MiB/s
AVG Method: MCBLOCK Elapsed: 0.15314 MiB: 1024.00000 Copy: 6686.500 MiB/s
在宿主機上測試
# mbw 1024
Long uses 8 bytes. Allocating 2*134217728 elements = 2147483648 bytes of memory.
Using 262144 bytes as blocks for memcpy block copy test.
Getting down to business... Doing 10 runs per test.
0 Method: MEMCPY Elapsed: 0.39870 MiB: 1024.00000 Copy: 2568.360 MiB/s
1 Method: MEMCPY Elapsed: 0.40264 MiB: 1024.00000 Copy: 2543.215 MiB/s
2 Method: MEMCPY Elapsed: 0.40111 MiB: 1024.00000 Copy: 2552.916 MiB/s
3 Method: MEMCPY Elapsed: 0.40056 MiB: 1024.00000 Copy: 2556.440 MiB/s
4 Method: MEMCPY Elapsed: 0.39971 MiB: 1024.00000 Copy: 2561.883 MiB/s
5 Method: MEMCPY Elapsed: 0.40160 MiB: 1024.00000 Copy: 2549.807 MiB/s
6 Method: MEMCPY Elapsed: 0.40178 MiB: 1024.00000 Copy: 2548.639 MiB/s
7 Method: MEMCPY Elapsed: 0.39959 MiB: 1024.00000 Copy: 2562.607 MiB/s
8 Method: MEMCPY Elapsed: 0.40139 MiB: 1024.00000 Copy: 2551.135 MiB/s
9 Method: MEMCPY Elapsed: 0.39770 MiB: 1024.00000 Copy: 2574.831 MiB/s
AVG Method: MEMCPY Elapsed: 0.40048 MiB: 1024.00000 Copy: 2556.950 MiB/s
0 Method: DUMB Elapsed: 0.22250 MiB: 1024.00000 Copy: 4602.185 MiB/s
1 Method: DUMB Elapsed: 0.22223 MiB: 1024.00000 Copy: 4607.859 MiB/s
2 Method: DUMB Elapsed: 0.22089 MiB: 1024.00000 Copy: 4635.729 MiB/s
3 Method: DUMB Elapsed: 0.22200 MiB: 1024.00000 Copy: 4612.530 MiB/s
4 Method: DUMB Elapsed: 0.22234 MiB: 1024.00000 Copy: 4605.497 MiB/s
5 Method: DUMB Elapsed: 0.22092 MiB: 1024.00000 Copy: 4635.141 MiB/s
6 Method: DUMB Elapsed: 0.22155 MiB: 1024.00000 Copy: 4621.961 MiB/s
7 Method: DUMB Elapsed: 0.22166 MiB: 1024.00000 Copy: 4619.709 MiB/s
8 Method: DUMB Elapsed: 0.22081 MiB: 1024.00000 Copy: 4637.450 MiB/s
9 Method: DUMB Elapsed: 0.22037 MiB: 1024.00000 Copy: 4646.667 MiB/s
AVG Method: DUMB Elapsed: 0.22153 MiB: 1024.00000 Copy: 4622.426 MiB/s
0 Method: MCBLOCK Elapsed: 0.14576 MiB: 1024.00000 Copy: 7025.392 MiB/s
1 Method: MCBLOCK Elapsed: 0.14662 MiB: 1024.00000 Copy: 6983.850 MiB/s
2 Method: MCBLOCK Elapsed: 0.14730 MiB: 1024.00000 Copy: 6952.035 MiB/s
3 Method: MCBLOCK Elapsed: 0.14555 MiB: 1024.00000 Copy: 7035.576 MiB/s
4 Method: MCBLOCK Elapsed: 0.14496 MiB: 1024.00000 Copy: 7064.213 MiB/s
5 Method: MCBLOCK Elapsed: 0.14586 MiB: 1024.00000 Copy: 7020.527 MiB/s
6 Method: MCBLOCK Elapsed: 0.14525 MiB: 1024.00000 Copy: 7050.108 MiB/s
7 Method: MCBLOCK Elapsed: 0.14741 MiB: 1024.00000 Copy: 6946.611 MiB/s
8 Method: MCBLOCK Elapsed: 0.14633 MiB: 1024.00000 Copy: 6997.977 MiB/s
9 Method: MCBLOCK Elapsed: 0.14508 MiB: 1024.00000 Copy: 7058.078 MiB/s
AVG Method: MCBLOCK Elapsed: 0.14601 MiB: 1024.00000 Copy: 7013.209 MiB/s
根據以上測試數據,結果以下:
測試內容 | 虛擬機 | 宿主機 |
---|---|---|
MEMCPY | 2470.646 | 2556.950 |
DUMB | 4465.911 | 4622.426 |
MCBLOCK | 6686.500 | 7013.209 |
虛擬機的性能損耗爲:
MEMCPY = (2556.950 - 2470.646)/2556.950 * 100% = 3.38%
DUMB = (4622.426 - 4465.911)/4622.426 * 100% = 3.39%
MCBLOCK = (7013.209 - 6686.500)/7013.209 * 100% = 4.66%
Ceph 平臺性能(對象存儲性能)
吞吐率和響應時間
COSBench 是 Inter 的一套開源對象存儲測試套件。它是一個分佈式的基準測試工具,目前已經能夠支持不一樣的對象存儲系統。
COSBench 由兩個關鍵組件組成:
- Driver(也稱 COSBench Driver 或負載生成器 (Load Generator)):
- 負責負載的生成、對目標雲對象存儲發起操做以及收集性能數據;
- 能夠經過
http://[driver-host]:18088/driver/index.html
訪問。
- Controller(也稱 COSBench Controller):
- 負責協調 driver,以總體執行負載、收集並集合運行時狀態和運行的結果;
- 能夠經過
http://[controller-host]:19088/controller/index.html
訪問。
測試文件說明
COSBench 的配置文件位於 conf/
目錄中,使用 xml 個是,將測試文件提交到 Controller 頁面,可執行測試。
Ceph 使用 s3 的配置進行測試,配置文件樣例爲 conf/s3-config-sample.xml
:
<?xml version="1.0" encoding="UTF-8" ?>
<workload name="s3-sample" description="sample benchmark for s3">
<storage type="s3" config="accesskey=<accesskey>;secretkey=<scretkey>;proxyhost=<proxyhost>;proxyport=<proxyport>;endpoint=<endpoint>" />
<workflow>
<workstage name="init">
<work type="init" workers="1" config="cprefix=s3testqwer;containers=r(1,2)" />
</workstage>
<workstage name="prepare">
<work type="prepare" workers="1" config="cprefix=s3testqwer;containers=r(1,2);objects=r(1,10);sizes=c(64)KB" />
</workstage>
<workstage name="main">
<work name="main" workers="8" runtime="30">
<operation type="read" ratio="80" config="cprefix=s3testqwer;containers=u(1,2);objects=u(1,10)" />
<operation type="write" ratio="20" config="cprefix=s3testqwer;containers=u(1,2);objects=u(11,20);sizes=c(64)KB" />
</work>
</workstage>
<workstage name="cleanup">
<work type="cleanup" workers="1" config="cprefix=s3testqwer;containers=r(1,2);objects=r(1,20)" />
</workstage>
<workstage name="dispose">
<work type="dispose" workers="1" config="cprefix=s3testqwer;containers=r(1,2)" />
</workstage>
</workflow>
</workload>
workload
<storage> 中:
- type: 表示所使用的雲對象存儲類型,Ceph 使用 s3 類型;
- config: 用於配置認證方式,'accesskey' 中寫入測試用戶的 accesskey,'secretkey' 中寫入測試用戶的 secretkey,'endpoint' 中寫入 Ceph 的 URL。
注意:
- endpoint 中須要使用 'http',不然將默認使用 'https',致使測試失敗。
workflow
<workstage> 表示測試的不一樣階段,其中 workers 表示併發數目:
- init: 建立測試 bucket;
- prepare: 建立測試 object,object 大小可經過 sizes 設置;
- main: 測試主體,其中的 'operation' 爲測試執行的操做,可執行的操做包括:read, write, filewrite, delete;
- cleanup: 清理測試所建立的 object;
- dispose: 清理測試所建立的 bucket。
執行測試
執行測試時,只須要登陸 COSBench 的 Controller 節點界面,將測試配置文件提交便可。也能夠經過界面上的配置生成配置文件來進行測試。
支持最大併發
Apache JMeter、http_load、webbench 能夠測試支持的最大併發。
其中 http_load 和 webbench 都比較簡單,而 Apache JMeter 就複雜的多。
JMeter 是有操做界面的,支持遠程啓動,也能夠組成集羣去測試,是一個強大的測試工具。
筆者也沒有研究的太深刻,就很少說了~
mark!!!