轉 談談我用過的性能測試工具

談談我用過的性能測試工具

一些性能指標

性能測試包括不少方面。目前爲止,我所作的性能測試包括雲平臺虛擬機的各項性能測試和 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 JMeterhttp_loadwebbench 能夠測試支持的最大併發。

其中 http_load 和 webbench 都比較簡單,而 Apache JMeter 就複雜的多。

JMeter 是有操做界面的,支持遠程啓動,也能夠組成集羣去測試,是一個強大的測試工具。

筆者也沒有研究的太深刻,就很少說了~

 

 mark!!!

相關文章
相關標籤/搜索