cosbench工具使用方法


一.Cosbench工具介紹

cosbench是intel開源的針對對象存儲開發的測試工具

二.Cosbench安裝

運行環境: 這里我們的系統是Centos7.6
依賴軟件: JDK nmap-ncat

# 安裝JDK
[root@k8s-01 ~]# yum install  java nmap-ncat

# 通過wget下載,或者直接通過瀏覽器輸入下面的鏈接下載
[root@k8s-01 ~]# wget https://github.com/intel-cloud/cosbench/releases/download/v0.4.2.c4/0.4.2.c4.zip

# 解壓
[root@k8s-01 ~]# unzip 0.4.2.c4.zip

# 解壓后文件說明
[root@k8s-01 ~]# cd 0.4.2.c4
[root@k8s-01 0.4.2.c4]# ls -al *.sh
-rw-r--r-- 1 root root 2639 Jul  9  2014 cli.sh              # munipulate workload through command line
-rw-r--r-- 1 root root 2944 Apr 27  2016 cosbench-start.sh   # start internal scripts called by above scripts 
-rw-r--r-- 1 root root 1423 Dec 30  2014 cosbench-stop.sh    # stop internal scripts called by above scripts 
-rw-r--r-- 1 root root  727 Apr 27  2016 start-all.sh        # start both controller and driver on current node
-rw-r--r-- 1 root root 1062 Jul  9  2014 start-controller.sh # start controller only on current node 
-rw-r--r-- 1 root root 1910 Apr 27  2016 start-driver.sh     # start driver only on current node 
-rw-r--r-- 1 root root  724 Apr 27  2016 stop-all.sh         # stop both controller and driver on current node
-rw-r--r-- 1 root root  809 Jul  9  2014 stop-controller.sh  # stop controller olny on current node 
-rw-r--r-- 1 root root 1490 Apr 27  2016 stop-driver.sh      # stop diriver only on current node 

三.Cosbench啟動

  • 運行cosbench之前先執行unset http_proxy
# 刪除http_proxy環境變量
[root@k8s-01 0.4.2.c4]# unset http_proxy
  • 啟動cosbench
[root@k8s-01 0.4.2.c4]# sh start-all.sh 
Launching osgi framwork ... 
Successfully launched osgi framework!
Booting cosbench driver ... 
.
Starting    cosbench-log_0.4.2    [OK]
Starting    cosbench-tomcat_0.4.2    [OK]
Starting    cosbench-config_0.4.2    [OK]
Starting    cosbench-http_0.4.2    [OK]
Starting    cosbench-cdmi-util_0.4.2    [OK]
Starting    cosbench-core_0.4.2    [OK]
Starting    cosbench-core-web_0.4.2    [OK]
Starting    cosbench-api_0.4.2    [OK]
Starting    cosbench-mock_0.4.2    [OK]
Starting    cosbench-ampli_0.4.2    [OK]
Starting    cosbench-swift_0.4.2    [OK]
Starting    cosbench-keystone_0.4.2    [OK]
Starting    cosbench-httpauth_0.4.2    [OK]
Starting    cosbench-s3_0.4.2    [OK]
Starting    cosbench-librados_0.4.2    [OK]
Starting    cosbench-scality_0.4.2    [OK]
Starting    cosbench-cdmi-swift_0.4.2    [OK]
Starting    cosbench-cdmi-base_0.4.2    [OK]
Starting    cosbench-driver_0.4.2    [OK]
Starting    cosbench-driver-web_0.4.2    [OK]
Successfully started cosbench driver!
Listening on port 0.0.0.0/0.0.0.0:18089 ... 
Persistence bundle starting...
Persistence bundle started.
----------------------------------------------
!!! Service will listen on web port: 18088 !!!
----------------------------------------------

======================================================

Launching osgi framwork ... 
Successfully launched osgi framework!
Booting cosbench controller ... 
.
Starting    cosbench-log_0.4.2    [OK]
Starting    cosbench-tomcat_0.4.2    [OK]
Starting    cosbench-config_0.4.2    [OK]
Starting    cosbench-core_0.4.2    [OK]
Starting    cosbench-core-web_0.4.2    [OK]
Starting    cosbench-controller_0.4.2    [OK]
Starting    cosbench-controller-web_0.4.2    [OK]
Successfully started cosbench controller!
Listening on port 0.0.0.0/0.0.0.0:19089 ... 
Persistence bundle starting...
Persistence bundle started.
----------------------------------------------
!!! Service will listen on web port: 19088 !!!
----------------------------------------------
# 查看java進程
[root@k8s-01 0.4.2.c4]# ps -ef |grep java
root     2209528       1  1 11:13 pts/5    00:00:05 java -Dcosbench.tomcat.config=conf/driver-tomcat-server.xml -server -cp main/org.eclipse.equinox.launcher_1.2.0.v20110502.jar org.eclipse.equinox.launcher.Main -configuration conf/.driver -console 18089
root     2209784       1  1 11:13 pts/5    00:00:05 java -Dcosbench.tomcat.config=conf/controller-tomcat-server.xml -server -cp main/org.eclipse.equinox.launcher_1.2.0.v20110502.jar org.eclipse.equinox.launcher.Main -configuration conf/.controller -console 19089
root     2220882 2134956  0 11:21 pts/5    00:00:00 grep --color=auto java

由上面的信息可知,cosbench啟動成功,運行兩個JAVA進程,driver和controller。可以通過提示的端口進行界面訪問。
http://${IP}:19088/controller/

  • 界面訪問驗證

三.Cosbench配置文件說明

進入conf目錄下,查看s3-config-sample.xml配置文件內容如下:

[root@k8s-01 conf]# cat 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 name : 測試時顯示的任務名稱,這里可以自行定義
  • description : 描述信息,這里可以自己定義
  • storage type: 存儲類型,這里配置為s3即可
  • config : 對該類型的配置,
  • workstage name : cosbench是分階段按順序執行,此處為init初始化階段,主要是進行bucket的創建,workers表示執行該階段的時候開啟多少個工作線程,創建bucket通過不會計算為性能,所以單線程也可以;config處配置的是存儲桶bucket的名稱前綴;containers表示輪詢數,上例中將會創建以s3testqwer為前綴,后綴分別為1和2的bucket
  • prepare階段 : 配置為bucket寫入的數據,workers和config以及containers與init階段相同,除此之外還需要配置objects,表示一輪寫入多少個對象,以及object的大小。
  • main階段 : 這里是進行測試的階段,runtime表示運行的時間,時間默認為秒
  • operation type : 操作類型,可以是read、write、delete等。ratio表示該操作所占有操作的比例,例如上面的例子中測試讀寫,read的比例為80%,write的比例為20%; config中配置bucket的前綴后綴信息。注意write的sizes可以根據實際測試進行修改
  • cleanup階段 : 這個階段是進行環境的清理,主要是刪除bucket中的數據,保證測試后的數據不會保留在集群中
  • dispose階段 : 這個階段是刪除bucket

配置完成后,就可以啟動測試,這里提供兩種啟動測試的方法:

  • 通過腳本啟動
# 配置文件示例如下
[root@k8s-01 0.4.2.c4]# cat 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=UZJ537657WDBUXE2CY6G;secretkey=8nIQByhEIsSkIe70aCHoD5HD73lDNNaqXbCSb0Hj;endpoint=http://192.168.30.117:7480" />

  <workflow>

    <workstage name="init">
      <work type="init" workers="1" config="cprefix=cephcosbench;containers=r(1,2)" />
    </workstage>

    <workstage name="prepare">
      <work type="prepare" workers="1" config="cprefix=cephcosbench;containers=r(1,2);objects=r(1,10);sizes=c(64)KB" />
    </workstage>

    <workstage name="main">
      <work name="main" workers="10" runtime="60">
        <operation type="read" ratio="80" config="cprefix=cephcosbench;containers=u(1,2);objects=u(1,10)" />
        <operation type="write" ratio="20" config="cprefix=cephcosbench;containers=u(1,2);objects=u(11,20);sizes=c(64)KB" />
      </work>
    </workstage>

    <workstage name="cleanup">
      <work type="cleanup" workers="1" config="cprefix=cephcosbench;containers=r(1,2);objects=r(1,20)" />
    </workstage>

    <workstage name="dispose">
      <work type="dispose" workers="1" config="cprefix=cephcosbench;containers=r(1,2)" />
    </workstage>

  </workflow>

</workload>
# 執行啟動
[root@k8s-01 0.4.2.c4]# sh cli.sh submit s3-config-sample.xml 
Accepted with ID: w1
  • 通過頁面上傳workload文件,也就是上面的配置文件進行啟動

四.測試結果分析

啟動后,可以通過界面查看任務運行情況:

測試完成后,顯示的結果如下:

下面對測試完成的結果進行分析:

  • Op-Type : 操作類型
  • Op-Count : 操作總數
  • Byte-Count : 操作產生的Byte
  • Avg-ResTime : 操作產生的平均時間
  • Avg-ProcTime : 操作的平均時間,這個是主要的延時參考,它反映了平均每次請求的時延
  • Throughput : 吞吐量,主要反映了操作的並發程度,也是重要的參考
  • Bandwidth : 帶寬,反映了操作過程中的平均帶寬情況
  • Succ-Ratio : 操作的成功率

五.集群測試

這里我們的集群配置為:

3節點服務器 + 256G內存 + 4*4T SATA + 4*4 SSD盤 + 三副本

這里由於我們的網卡是千兆網卡,以目前我們集群的配置分析來看,網絡應該是一個瓶頸,這里我們可以進行下驗證測試:

5.1 測試下集群RADOS性能

這里我們使用rados工具對datapool進行壓測:

  • 在同一個集群客戶端我們同時執行三個進程進行壓測
[root@ceph01 ~]# rados bench 300 write -b 4M -t 64 -p datapool --cleanup
  • 觀察壓測結果


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM