COSBench User Guide

COSBenchUserGuide

COSBenchUserGuide

User Manual: Pdf

Open the PDF directly: View PDF PDF.
Page Count: 76

DownloadCOSBench User Guide
Open PDF In BrowserView PDF
COSBench User Guide
Version 2.8.6
Nov., 2015
Wang, Yaguang

This document describes how to install, configure, and run COSBench (a cloud storage benchmark tool)
step by step, explains how to define workloads using configuration files, and provides reference
examples.
Document Number: 328791-001US

INFORMATION IN THIS DOCUMENT IS PROVIDED IN CONNECTION WITH INTEL® PRODUCTS. NO LICENSE,
EXPRESS OR IMPLIED, BY ESTOPPEL OR OTHERWISE, TO ANY INTELLECTUAL PROPERTY RIGHTS IS GRANTED BY
THIS DOCUMENT. EXCEPT AS PROVIDED IN INTEL'S TERMS AND CONDITIONS OF SALE FOR SUCH PRODUCTS,
INTEL ASSUMES NO LIABILITY WHATSOEVER, AND INTEL DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY,
RELATING TO SALE AND/OR USE OF INTEL PRODUCTS INCLUDING LIABILITY OR WARRANTIES RELATING TO
FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR INFRINGEMENT OF ANY PATENT, COPYRIGHT OR
OTHER INTELLECTUAL PROPERTY RIGHT. UNLESS OTHERWISE AGREED IN WRITING BY INTEL, THE INTEL
PRODUCTS ARE NOT DESIGNED NOR INTENDED FOR ANY APPLICATION IN WHICH THE FAILURE OF THE INTEL
PRODUCT COULD CREATE A SITUATION WHERE PERSONAL INJURY OR DEATH MAY OCCUR.
Intel may make changes to specifications and product descriptions at any time, without notice. Designers must not
rely on the absence or characteristics of any features or instructions marked "reserved" or "undefined." Intel
reserves these for future definition and shall have no responsibility whatsoever for conflicts or incompatibilities
arising from future changes to them. The information here is subject to change without notice. Do not finalize a
design with this information. The products described in this document may contain design defects or errors known
as errata which may cause the product to deviate from published specifications. Current characterized errata are
available on request. Contact your local Intel sales office or your distributor to obtain the latest specifications and
before placing your product order. Copies of documents which have an order number and are referenced in this
document, or other Intel literature, may be obtained by calling 1-800-548-4725, or by visiting Intel's Web Site
http://www.intel.com/.
Software and workloads used in performance tests may have been optimized for performance only on Intel
microprocessors. Performance tests, such as SYSmark* and MobileMark*, are measured using specific computer
systems, components, software, operations and functions. Any change to any of those factors may cause the
results to vary. You should consult other information and performance tests to assist you in fully evaluating your
contemplated purchases, including the performance of that product when combined with other products. For more
information go to http://www.intel.com/performance.
*Other names and brands may be claimed as the property of others.
Copyright © 2013 Intel Corporation. All rights reserved. Intel and the Intel logo are trademarks of Intel
Corporation in the U.S. and other countries.
0413/RJM/MESH/PDF

328791-001US

Contents
1 Introduction ............................................................................................................................................. 11
1.1 Reference Hardware Configuration .................................................................................................. 12
1.2 System Requirements ....................................................................................................................... 12
1.3 Supported Cloud Object Storage System Matrix .............................................................................. 13
1.4 What’s in the Rest of This Guide ....................................................................................................... 13
2 Installing COSBench ................................................................................................................................. 15
2.1 Installing the Operating System ........................................................................................................ 15
2.1.1 Installing the Java Runtime Environment (JRE).......................................................................... 16
2.1.2 Installing Curl ............................................................................................................................. 16
2.2 Installing COSBench .......................................................................................................................... 17
2.2.1 Preparation ................................................................................................................................ 17
2.2.2 Installation ................................................................................................................................. 17
2.3 Directory Structure ........................................................................................................................... 18

COSBench User Guide | 2

2.3.1 Scripts ......................................................................................................................................... 18
2.3.2 Sub-directories ........................................................................................................................... 19
2.4 Verifying Install ................................................................................................................................. 19
2.4.1 Launching COSBench.................................................................................................................. 19
2.4.2 Checking Controllers and Drivers ............................................................................................... 20
2.4.3 Testing the Install ....................................................................................................................... 21
2.5 Deploying COSBench ......................................................................................................................... 22
3 Configuring and Running.......................................................................................................................... 23
3.1 General .............................................................................................................................................. 23
3.2 Configuring the Controller ................................................................................................................ 23
3.2.1 Conf/controller.conf .................................................................................................................. 23
3.3 Configuring the Driver....................................................................................................................... 24
3.3.1 Conf/driver.conf ......................................................................................................................... 24
3.4 Starting Drivers ................................................................................................................................. 25
3.5 Starting Controllers ........................................................................................................................... 28
3.6 Submitting Workloads ...................................................................................................................... 29
3.6.1 Defining Workloads.................................................................................................................... 29
3.6.2 Submitting Workloads ............................................................................................................... 32
3.6.3 Checking Workload Status ......................................................................................................... 33
3.7 Stopping Drivers and Controllers ...................................................................................................... 34
3.8 Configuring Tomcat ........................................................................................................................... 35
3.9 Workload management .................................................................................................................... 35
4 Configuring Workloads ............................................................................................................................ 36
4.1 Introduction ...................................................................................................................................... 36
4.2 Selection Expression (also referred to as Selector) .......................................................................... 36
4.2.1 Overview .................................................................................................................................... 36
4.2.2 Selector ...................................................................................................................................... 37
4.2.3 Allowable Combinations ............................................................................................................ 38
4.3 Workload........................................................................................................................................... 38
4.3.1 General Format .......................................................................................................................... 38

COSBench User Guide | 3

4.3.2 Attributes ................................................................................................................................... 39
4.4 Auth................................................................................................................................................... 39
4.4.1 General Format .......................................................................................................................... 39
4.4.2 Attributes ................................................................................................................................... 39
4.4.3 Authentication Mechanisms ...................................................................................................... 39
4.5 Storage .............................................................................................................................................. 42
4.5.1 General Format .......................................................................................................................... 42
4.5.2 Attributes ................................................................................................................................... 42
4.5.3 Storage Systems ......................................................................................................................... 42
4.6 Work Stage ........................................................................................................................................ 47
4.6.1 General Format .......................................................................................................................... 48
4.6.2 Attributes ................................................................................................................................... 48
4.7 Work.................................................................................................................................................. 48
4.7.1 General Format .......................................................................................................................... 48
4.7.2 Attributes ................................................................................................................................... 50
4.8 Special Work ..................................................................................................................................... 51
4.8.1 General Format .......................................................................................................................... 51
4.8.2 Supported Special Work............................................................................................................. 51
4.9 Operation .......................................................................................................................................... 54
4.9.1 General Format .......................................................................................................................... 54
4.9.2 Attributes ................................................................................................................................... 54
4.9.3 Supported operations ................................................................................................................ 54
4.9.4 Examples .................................................................................................................................... 58
4.10 Additional comments ...................................................................................................................... 59
4.10.1 Overview .................................................................................................................................. 59
4.10.2 Division strategy....................................................................................................................... 59
5 Results ...................................................................................................................................................... 61
5.1 Structure ........................................................................................................................................... 61
5.2 Per-Run Data ..................................................................................................................................... 61
5.2.1 Overall Performance Data (e.g., w1-demo.csv) ......................................................................... 62

COSBench User Guide | 4

5.2.2 Timeline Data (e.g., s3-main.csv) ............................................................................................... 62
5.2.3 Response-Time Histogram Data (e.g., w1-demo-rt-histogram.csv) .......................................... 62
5.2.4 Response Time breakdown (e.g., s3-main.csv) .......................................................................... 63
5.2.5 Workload-config.xml .................................................................................................................. 63
5.2.6 Workload.log .............................................................................................................................. 63
5.3 Metrics .............................................................................................................................................. 64
5.3.1 Throughput (Operations/s or Op/s) ........................................................................................... 64
5.3.2 Response Time (in ms) ............................................................................................................... 64
5.3.3 Bandwidth (MB/s) ...................................................................................................................... 64
5.3.4 Success Ratio (%)........................................................................................................................ 64
5.3.5 Other Metrics ............................................................................................................................. 64
6 FAQs ......................................................................................................................................................... 65
6.1 General .............................................................................................................................................. 65
6.2 Swift .................................................................................................................................................. 68
6.3 AmpliStor .......................................................................................................................................... 69
6.4 S3....................................................................................................................................................... 71
6.5 Ceph .................................................................................................................................................. 71
6.6 CDMI ................................................................................................................................................. 71
Appendix A. Sample Configurations ........................................................................................................... 73
Swift ........................................................................................................................................................ 73
AmpliStor ................................................................................................................................................ 74

COSBench User Guide | 5

Revision History
Revision

Date

Description

0.5

July 14, 2012

Initial version

0.6

July 18, 2012

Add “init” and “dispose” stages in AmpliStor* example
and description for special stages

0.7

July 20, 2012

Add “nsroot” to storage parameter list to access
AmpliStor v2.5 namespace; by default, it’s
“/namespace”, set to “/manage/namespace” for v2.5

0.8

July 24, 2012

Change default listening ports:





8088->18088
8089->18089
9088->19088
9089->19089

0.9

August 1, 2012

Change example port numbers to 19088 and 18088 to
avoid confusion

1.0

August 9, 2012

Add one section to describe data results and one section
for FAQs

1.1

August 13, 2012

 Add one paragraph in result to explain metrics
 Modify AmpliStor sample to reflect v2.5 needs
 Add parameter list

1.2

August 24, 2012

Enhance content based on internal and external user
feedback

1.3

August 30, 2012

 Add Red Hat screenshot
 Change runtime from 60 to 300 for AmpliStor
example to avoid confusion
 Remove internal link for package downloading
 Fix one bug in “cleanup” stage of Swift sample

1.4

September 14, 2012

Fix inconsistencies

1.5

September 17, 2012

Change default OS to Ubuntu* 12.04.1 LTS desktop

1.6

November 2, 2012

Major modifications:







Transfer all scripts to Ubuntu 12.04.1 compatible
Add OS installation steps
Add object integrity check parameter
Add details about selector description
Add details about directory structure
Move workload configuration section from Appendix
A to main body

COSBench User Guide | 6

Revision

Date

Description

1.7

November 13, 2012

Minor modifications:
 Correct batch script names
 Add one item in FAQ for handling “OOM” error

1.8

November 20, 2012

Change parameter “url” to “auth_url” for swauth and
keystone to avoid confusion

1.9

January 14, 2013

 Add parameter “tenant_name” for keystone
 Add items in FAQ to explain testing with large
objects

2.0

January 25, 2013

 Correct two minor typographic errors
 Add explanation about histogram data
 Reword FAQ #12

2.1

February 19, 2013

 Constrain supported AmpliStor versions to v2.3 and
v2.5
 Minor formatting modifications

2.2

March 7, 2013

 Fix one typo from “apt-get” to “apt-get install”
 Correct one word from “turn-around point” to
“tipping point”
 Add section 6.1.14 for how to split read/write
 Enhance section 6.1.6 for how to reuse data
 Minor rewording from “policy” to “policy UID” in
section 6.3.1
 Enhance section 6.1.7 for configuring multiple same
stages
 Add section 6.3.3 for how to simplify policy UID
setting

2.3

March 8, 2013

 Add explanation about using “ps” in section 3.7
 Add explanation about how to do pre-test in section
6.2.2
 Reword section 6.1.12 to explain conditions for using
only one worker
 Replace “Excel” with “spreadsheet program” in
section 5.2.2
 Add case for multiple client daemons in AmpliStor
section of Appendix A
 Add explanation for what commands do in section
2.2.2
 Add example controller configuration to show
multiple drivers supporting in section 3.2.1
 Correct one typographic error in section 6.1.9

2.4

March 13, 2013

 Change “enlarging” to “expanding” and add example

COSBench User Guide | 7

Revision

Date

Description

2.5

March 29, 2013

 Change “127.0.0.1” to “192.168.250.36” in text and
screen captures of sections 2.4.3, 3.5, 3.6, 4.4.3, and
Appendix A
 Add AmpliStor v3.1 in section 1.1
 Remove mention of licensing in section 2.3.1

2.6

April 7, 2013

 Add package list information in section 2.1 and
provide one separate pkg.lst
 Add “retry” parameter for auth to overcome failures
at high concurrent requests for authentication.
 Change “mandatory” to “required” in section 3.2.1

2.7

July 22, 2013

 Add filewrite usage information in section 4.9 (from
Niklas)
 Add sequential selector in section 4.2.2 (from Niklas)
 Change the measurement unit for bandwidth from
MiB/s (=1024*1024 Byte/s) to MB/s (=1000*1000
Byte/s).

2.7.1

July 29, 2013






2.7.2

August 27, 2013

 Minor rewording

2.8

October 31, 2013










2.8.1

November 14, 2013

Add S3 configuration information in section 4.5.3
Add S3 FAQ in section 6.4
Change mailing list url in section 1
Add supported storage system matrix in section 1.3

Add direct auth for swift in section 4.5.3
Add sproxyd adapter parameter list in section 4.5.3
Add “delay” stage in section 4.8.2
Add tomcat related configuration information,
including web authentication for web console in new
section 3.8
Add configurable “archive” folder in section 3.2
Add workload management information in section
3.9
Add sentences about multiple stages in workload
configuration UI page in section 3.6.1
Add histogram selector in section 4.2.2

 Add section 4.10 to describe additional hints like
data division strategy for workload configuration.
 Correct sentences in section 4.2.2 for range selector,
 Add FAQ 6.1.17 to explain how to use range selector
in normal stage.
 Add “afr” parameter in section 4.7.2

COSBench User Guide | 8

Revision

Date

Description

2.8.2

Feb 13, 2014

 Add parameter “pool_size” for Scality sproxyd
adapter in section 4.5.3.
 Add explanation for “nsroot” parameter in section
6.3.4.
 Update the binary package link in section 2.2.1
 Correct description for histogram selector to
emphasis the number is weight instead of
percentage in section 4.2.2.
 Add “httpauth” authentication mechanism in section
4.4.
 Add “cdmi” storage type in section 4.5.

2.8.3

May 12, 2014

 Added advanced config UI related information in
section 3.6.1 and 3.6.2
 Add cvstool as optional prerequisites if user may
need it to process generated results.
 Add “driver” parameter in section 4.7.2.
 Add section 6.5 for ceph FAQ.
 Update compatibility list in section 1.3.
 Add section 5.2.4 for response time breakdown
information.
 Add section 6.6 for CDMI FAQ.
 Add cdmi_swift in section 4.5.3.
 Add FAQ in 6.2.4 for tempauth.

2.8.4

July 3, 2014

 Add “policy” parameter in swift for storage policy
feature in section 4.5.3.
 Add one FAQ entry to explain how to enable storage
policy for swift in section 6.2.5
 Correct the extension of tomcat configuration files
from .conf to .xml in section 3.8
 Add one FAQ entry to explain how to make multiple
drivers running on the same physical node in section
6.1.18.

2.8.5

Oct. 22, 2014

 Add librados storage parameters in section 4.5.3.1.9
 Add FAQ entry to explain how to change logging
level to disclose more detailed information for
trouble shooting in section 6.1.19
 Add “caching” parameter for Auth in section 4.4.3
 Add new “list” operator in section 4.9.3

COSBench User Guide | 9

Revision

Date

2.8.6

Sept. 2, 2015

Description
 Correct the selector to “r” in the sample workload
snippet in section 6.1.17
 Update the procedure to cover the case to start
multiple drivers on one node in section 3.4
 Add “transfer_rate” parameter for swift storage,
then “max_connections” and “path_style_access”
parameters for S3 storage in section 4.5.3

2.8.7

Nov. 2, 2015

 Add “region” parameter for keystone authentication
in section 4.3.3

COSBench User Guide | 10

1 Introduction
COSBench is a distributed benchmark tool to test cloud object storage systems, it supports a few cloud
object storage systems so far (see 1.3 “Supported Cloud Object Storage System Matrix”). COSBench also
allows users to create adaptors for additional storage systems. Please refer to the “COSBench Adaptor
Development Guide” for details.

COSbench consists of two key components:




Driver (also referred to as COSBench Driver or Load Generator):
o

Responsible for workload generation, issuing operations to target cloud object storage,
and collecting performance statistics.

o

Can be accessed via http://:18088/driver/index.html.

Controller (also referred to as COSBench Controller):
o

Responsible for coordinating drivers to collectively execute a workload, collecting and
aggregating runtime status or benchmark results from driver instances, and accepting
workload submissions.

o

Can be accessed via http://:19088/controller/index.html.

COSBench User Guide | 11

The controller and driver can be deployed on the same node or different nodes, and the node can be a
physical machine or virtual machine (VM) instance.
Intel source code for COSBench is being released under the Apache 2.0 license, and hosted at
http://github.com/intel-cloud/cosbench/.
A mailing list has been established for COSBench at the following location:
http://cosbench.1094679.n5.nabble.com/.

1.1 Reference Hardware Configuration
The hardware configurations used for validation purposes in Intel labs are given below. This information
is provided for reference only, as the appropriate systems for various implementations are highly
dependent upon individual usage scenarios. Also note that network resources play a vital role in
COSBench implementations.
Hardware

Configuration

Controller
Processor
RAM
Storage
Network

Two Intel® Xeon® processors X5570 @ 2.93 GHz
12 GB RAM
1x 120 GB+ disk drive
Intel® 82574 Gigabit Ethernet Controller

Driver
Processor
RAM
Storage
Network

Two Intel Xeon processors X5570 @ 2.93 GHz
12 GB RAM
1x 50 GB+ disk drive
Intel® 82599 10 Gigabit Ethernet Controller

1.2 System Requirements
NOTE: The current release of COSBench features Ubuntu* 12.04.1 LTS Desktop, but the COSBench
development team assumes that organizations will install using various OSs and contribute related
feedback to the community.


Ubuntu 12.04.1 LTS Desktop



Java* Runtime Environment 1.6 or later



Curl 7.22.0 or later



Csvtool if processing generated csv files is required.



Free TCP port (ensure these ports are accessible non-locally):

COSBench User Guide | 12

o

On COSBench controller machine: 19088

o

On COSBench driver machines: 18088

NOTE: Throughout this document, command line is bolded and italicized; yellow text is used for
emphasis, to draw attention to specific information.

1.3 Supported Cloud Object Storage System Matrix
Generally, two parts will be involved to access each cloud object storage system, they are the
authentication mechanism and object access semantics. To meet the complexity from different systems,
COSBench treats them separately, and encapsulate into two APIs (AuthAPI and StorageAPI).
Developer can implement them in different bundles, or combine them into one, and users can combine
one Auth API implementation with multiple storage API implementations, or associate multiple Auth API
implementations with one storage API implementations. Please refer to the “COSBench Adaptor
Development Guide” for details.
Below table lists the status of different AuthAPI and StorageAPI combinations so far, it may be updated
time to time:

Note:
* librados is contributed by Niklas Goerke - niklas974@github,
* sproxyd is contributed by Christophe Vedel from Scality

1.4 What’s in the Rest of This Guide
This document describes how to install, configure, and use COSBench, a cloud storage benchmarking
tool.






Section 2 covers the initial installation and testing of COSBench.
Section 3 explains how to configure and run the tool.
Section 4 instructs the user about how to define workloads.
Section 5 explains the results provided by COSBench and how to interpret them.
Section 6 answers frequently asked questions.

COSBench User Guide | 13



Appendix A provides sample configurations for different storage systems.

COSBench User Guide | 14

2 Installing COSBench
2.1 Installing the Operating System
1. Download Ubuntu Desktop 12.04.1 LTS.
2. Follow the instructions in the Ubuntu installation guide.
3. Below are screenshots from major steps during installation, which include the creation of one
user named “cosbench”; all other settings may be left at their defaults or modified at the user’s
discretion.

COSBench User Guide | 15

4. The final package list after installation can be found in the file “pkg.lst” on the github site.

2.1.1 Installing the Java Runtime Environment (JRE)


OpenJDK is the default JRE; Oracle JRE should also work.



If an Internet connection is available, the package can be installed through apt-get as follows:
cosbench@cosbox:~$ sudo apt-get update
cosbench@cosbox:~$ sudo apt-get install openjdk-7-jre



If no Internet connection is available, the JRE can be installed using Debian* software packages;
two packages are essential: JRE-LIB and JRE-HEADLESS.



Those packages can be installed as follows (this procedure uses “/tmp” as an example; a
different folder may be used at the user’s discretion):
cosbench@cosbox:/tmp$ sudo dpkg –i –force depends openjdk-7-jre-lib_7u72.3.2a-0ubuntu0.12.04.1_all.deb

(Reading database …
cosbench@cosbox:/tmp$ sudo dpkg –i –force depends openjdk-7-jreheadless_7u7-2.3.2a-0ubuntu0.12.04.1_amd64.deb

Selecting previously unselected package openjdk-7-jre-headless …
cosbench@cosbox:/tmp$ java –showversion

java version “1.7.0_07”
…

2.1.2 Installing Curl


If an Internet connection is available, Curl can be installed as follows:
cosbench@cosbox:~$ sudo apt-get update
cosbench@cosbox:~$ sudo apt-get install curl



If no Internet connection is available, install Curl using Debian software packages:

COSBench User Guide | 16

cosbench@cosbox:/tmp$ sudo dpkg –i curl_7.22.0-3ubuntu4_amd64.deb
cosbench@cosbox:/tmp$ curl –V
curl 7.22.0 (x86_64-pc-linux-gnu) …

2.2 Installing COSBench
2.2.1 Preparation
In the current release, the COSBench controller and driver are combined; they do not each have a
separate package.
Obtain the installation package .zip (e.g., 2.1.0.GA.zip) from https://github.com/intelcloud/cosbench/releases and place it at COSBench package under the home directory on the controller
node.

2.2.2 Installation
Follow the commands below to finish the installation, which unpacks the COSBench package into one
folder, create one symbolic link called “cos” to it, and make all bash scripts executable:
cosbench@cosbox:/tmp$ cd ~
cosbench@cosbox:~$ unzip 2.1.0.GA.zip
cosbench@cosbox:~$ rm cos
cosbench@cosbox:~$ ln –s 2.1.0.GA/ cos
cosbench@cosbox:~$ cd cos
cosbench@cosbox:~$ chmod +x *.sh

COSBench User Guide | 17

2.3 Directory Structure

2.3.1 Scripts
Script

Description

start-all.sh
stop-all.sh

Start/stop both controller and driver on current
node

start-controller.sh
stop-controller.sh

Start/stop controller only on current node

start-driver.sh
stop-driver.sh

Start/stop driver only on current node

cosbench-start.sh
cosbench-stop.sh

Internal scripts called by above scripts

cli.sh

Manipulate workload through command line

A few Windows* batch scripts are also included, for demonstration purposes only.

COSBench User Guide | 18

Script

Description

start-all.bat

Start both controller and driver on current node

start-controller.bat

Start controller only on current node

start-driver.bat

Start driver only on current node

Web.bat

Open controller web console through locally
installed browser

2.3.2 Sub-directories
Sub-directory

Description

archive

Stores all generated results; see the Results section of
this document

conf

Configuration files, including COSBench configurations
and workload configurations

log

Runtime log files; the important one is system.log

osgi

Contains COSBench libraries and third-party libraries

main

Contains the OSGi launcher

2.4 Verifying Install
The following steps launch the controller and driver on the current node and test to ensure that the
installation is correct.

2.4.1 Launching COSBench
HTTP proxy breaks the interaction between controller and driver. To avoid HTTP requests routing, you
need to bypass the proxy setting:
cosbench@cosbox:~$ unset http_proxy

Start up the COSBench driver and controller on the current node. By default, the COSBench driver listens
on port 18088, and the COSBench controller listens on port 19088.
cosbench@cosbox:~$ sh start-all.sh

COSBench User Guide | 19

2.4.2 Checking Controllers and Drivers
cosbench@cosbox:~$ netstat –an |grep LISTEN |grep 19088 # check controller.
tcp

0

0 :::19088

:::*

LISTEN

Cosbench@cosbox:~$ netstat –an |grep LISTEN |grep 18088 # check driver
tcp

0

0 :::18088

:::*

LISTEN

COSBench User Guide | 20

2.4.3 Testing the Install
Cosbench@cosbox:~$ sh cli.sh submit conf/workload-config.xml # run mock test.
Accepted with ID: w1
cosbench@cosbox:~$ sh cli.sh info
Drivers:
driver1 http://127.0.0.1:18088/driver
Total: 1 drivers
Active Workloads:
W1

Thu Jul 12 04:37:31 MST 2012

PROCESSING

Open http://127.0.0.1:19088/controller/index.html in a browser to monitor status. In the example
below, one “processing” workload is listed in the “active workloads” section.

COSBench is now successfully installed on the current node. Optionally, the workload may be cancelled
and COSBench may be stopped as follows:
cosbench@cosbox:~$ sh cli.sh cancel w1
W1

Thu Jul 12 23:34:14 MST 2012

CANCELLED

cosbench@cosbox:~$ sh stop-all.sh
Stopping cosbench controller ...
Successfully stopped cosbench controller.
==================================================
Stopping cosbench driver ...
Successfully stopped cosbench driver.

COSBench User Guide | 21

2.5 Deploying COSBench



Copy .zip to the remaining COSBench nodes by means such as scp or shared folder.
Repeat the procedures listed above for installing COSBench and verifying the installation on
each node.

COSBench User Guide | 22

3 Configuring and Running
3.1 General
The COSBench controller and driver depend on different system configuration files to start up, and those
configuration files are only for COSBench itself, as opposed to workload configuration.
The following table gives an overview of all the configurations COSBench expects.
Configuration

Description

File Path

controller

Configuration for a controller; read by the controller
during its initialization

conf/controller.conf

driver

Configuration for a driver; read by the driver during its
initialization

conf/driver.conf

Configuration for a workload being submitted

Submitted via
controller’s web
interface

workload

3.2 Configuring the Controller
3.2.1 Conf/controller.conf
An INI format file is required for configuration of the COSBench controller, as in the following example:
[controller]
concurrency=1
drivers=3
log_level = INFO
log_file = log/system.log
archive_dir = archive
[driver1]
name=driver1
url=http://192.168.10.1:18088/driver
[driver2]
name=driver2
url=http://192.168.10.2:18088/driver
[driver3]
name=driver3
url=http://192.168.10.3:18088/driver

COSBench User Guide | 23

[controller]
Parameter

Type

Default

Comment

drivers

Integer

1

Number of drivers
controlled by this controller

concurrency

Integer

1

Number of workloads that
can be executed
simultaneously

log_level

String

“INFO”

“TRACE”, “DEBUG”, “INFO”,
“WARN”, “ERROR”

log_file

String

“log/system.log”

Where the log file is stored

archive_dir

String

“archive”

Where the archived
workload results are stored

The driver section for the nth driver should be named driver in order to be recognized.
[driver]

Parameter

Type

Default

Comment

name

String

Label used to identify the
driver node. Note that driver
name is not necessarily the
node’s hostname

url

String

Address to access the driver
node

3.3 Configuring the Driver
3.3.1 Conf/driver.conf
This file is optional; the COSBench driver can start up without this configuration file, although the web
console can’t correctly label the driver node. Configuration is an INI format file, as in the following
example:
[driver]
name=driver1
url=http://192.168.0.11:18088/driver

COSBench User Guide | 24

[driver]
Parameter

Type

Default

Comment

name

String

Label used to identify the driver node; note
that driver name is not necessarily the node’s
hostname

url

String

Address to access the driver node

3.4 Starting Drivers




Edit conf/driver_template.conf on driver nodes, if desired
Edit conf/driver-tomcat-server_template.xml, if want change tomcat information
Launch drivers with script start-driver.sh
sh start-driver.sh n ip base-port

o

First parameter means the number of drivers, second is drivers’ip, last one is base-port
for listen. You can choose any of them if want.

sh start-driver.sh

o

By default, COSBench start one driver on 127.0.0.1 and listens on port 18088

COSBench User Guide | 25

sh start-driver.sh 3

o

with one parameter n, start three drivers on 127.0.0.1 and listen on ports
18088,18188,18288

COSBench User Guide | 26

sh start-driver.sh 1 192.168.0.11

o

with two parameter, start one driver on 192.168.0.11 and listens on port 18088

sh start-driver.sh 2 192.168.0.11 16088

o



with three parameters n,ip,base-port, start two drivers on 192.168.0.11 and listen on
port 16088,16188

Ensure that all drivers are accessible from the controller using an HTTP connection.
 By connecting with Curl, one valid HTML file is expected in the console:
curl http://:/driver/index.html



When http://:/driver/index.html is opened in a web browser, the
following web page displays:

COSBench User Guide | 27

NOTE: If any errors or unexpected results occur, please check system configurations; common issues
include firewall filtering or http proxy routing.

3.5 Starting Controllers




Edit conf/controller.conf on the COSBench controller machine.
By default, the COSBench controller listens on port 19088.
Launch Controller on the controller node.
sh start-controller.sh



Ensure that the controller is started successfully.
o By connecting with Curl, one valid HTML file is expected in the console:
curl http://:19088/controller/index.html

o

When http://:19088/controller/index.html is opened in a web browser,
the following web page displays (note that the  IP address 192.168.250.36

COSBench User Guide | 28

shown in the screen capture below is replaced with the actual IP address of the controller
node):

3.6 Submitting Workloads
A few templates are provided for reference in the conf/ directory:


workload-config.xml is a template with comments to describe how to configure for different
storage types. It will access mock storage to help with verification.



swift-config-sample.xml is a template for the OpenStack Swift storage system.



ampli-config-sample.xml is a template for the Amplidata AmpliStor v2.3 and v2.5 storage
systems. See Appendix A for version-specific configuration information.



s3-config-sample.xml is a template for Amazon S3 compatible storage system.

3.6.1 Defining Workloads
For details of how to create a workload config file for user-defined workloads, please see the Workload
Configuration section of this document.
Basic workload configuration options are also available from the workload configuration page on the
controller web console; please refer to the Workload Configuration section of this document to
customize the XML file for maximum flexibility. (Note that the  IP address
192.168.250.36 shown in the screen capture below should be replaced with the actual IP address of the
controller node.)
The workload configuration page supports to define multiple same stages, and also it allows to insert
delay between stages to help identify boundary.

COSBench User Guide | 29

To define bulk workloads, we can use 'advanced config for workloads' hyperlink on controller web
console. Advanced config UI helps to automatically generate a very large number of different
combinations of various input parameters such as object sizes, objects per container, number of
containers, workers, read-write-delete ratios.
Once you click on 'advanced config for workloads' hyperlink, you will go to advanced config screen. From
here, you can either generate workloads files or submit workloads directly.
In this section we will look into how to generate workload files. Whatever value you enter in 'Workload
Matrix Name', a directory with that name will be generated inside 'workloads' directory under
COSBench installation directory on machine where controller is installed.
For each workload you define from this screen, a file with name equal to the string you entered inside
'Workload Name' field will be created and will be placed under workload matrix directory created in
previous step. There are some constraints on the names which you can enter in 'Workload Matrix Name'
and 'Workload Name' fields. You should use alphabets or numbers, special characters allowed include _
- #. ( ) / % &. Length of string entered should be between 3 to 50 characters. Authentication and Storage
configurations will be common to all workloads on advanced config UI page. Similarly attributes like

COSBench User Guide | 30

Runtime, Rampup, Delay and Number of drivers will be common to all workloads defined on this web
page. Following input parameters are necessary for defining each workload:
Parameter

Type

Default

Comment

Object sizes

String

4,128,512

Can be comma
separated or can
be a range

Object size unit

String

KB

Drop down box
consisting of
values like Byte,
KB, MB, GB

Objects per
container

String

1000

Comma
separated string

Containers

String

1,1000

Comma
separated string

Workers

String

1,2,4,8,16,32,64

Comma
separated string

Apart from these parameters, you can also add as many read-write-delete combinations as you want to
any workload with the help of 'Add RWD ratio' button. You can also add as many workloads as you want
with the help of 'Add Workload' button.

COSBench User Guide | 31

Once done with filling all these fields with appropriate values, you can then click on 'Generate Workload
File/s' button. This will generate all configuration files at already mentioned location. You can edit these
configuration files if you want and then submit them through workload submission UI screen. We also
have option to submit to workloads directly through this page. We will look into that method in next
sub-section.

3.6.2 Submitting Workloads
There are two ways to submit workloads to COSBench.


Using the command-line interface:
sh cli.sh submit conf/config.xml



Using the web console:
Open http://:19088/controller/index.html in a browser to monitor running
status. (Note that the  IP address 192.168.250.36 shown in the screen
capture below should be replaced with the actual IP address of the controller node.)

COSBench User Guide | 32

3.6.3 Checking Workload Status
There are also two ways to check workload status.


Using the command-line interface:
sh cli.sh info



Using the web console:
Open http://:19088/controller/index.html in a browser to monitor running
status. (Note that the  IP address 192.168.250.36 shown in the screen
capture below should be replaced with the actual IP address of the controller node.)
You can also submit workloads directly through advanced config UI page. However, this
page submits workloads generated which are defined through this page itself. You can use
‘Submit Workload/s’ button for the same. To learn how to define workloads through
advanced config UI, please refer to previous sub-section.

COSBench User Guide | 33

Clicking view details in the Active Workload section of that interface screen displays runtime
performance data, as shown below:

3.7 Stopping Drivers and Controllers
ps |grep java # you should see java here.
sh stop-driver.sh
ps |grep java # should be no java running.
ps |grep java
sh stop-controller.sh
ps |grep java

The “ps” command is used to help confirm whether the driver or controller process is stopped. If the
Java process doesn’t stop as expected, the user may forcibly stop it by killing the process.

COSBench User Guide | 34

3.8 Configuring Tomcat
COSBench controller and driver use Apache Tomcat as the web server, the following table gives an
overview of all the configurations related to Tomcat.
Configuration

Description

File Path

Tomcat for
controller

Configuration for the web server on controller

conf/ controllertomcat-server.xml

Tomcat for
driver

Configuration for the web server on driver

conf/ driver-tomcatserver.xml

Tomcat web
authentication

Configuration for web authentication, by default,
there is a default username/password pair configured,
user can change the “password” in configuration file
to enforce username/password authentication when
accessing web console.

conf/cosbenchusers.xml

3.9 Workload management
COSBench can accept multiple workload submissions, it maintains one job queue for those workloads,
and executes them one by one.
On controller web console, workloads are organized into three sections:




Active workloads: those are just submitted and not finished yet, including the one is in
processing and those are in queue.
Historical workloads: those are the workloads which have finished.
Archived workloads: those are the workloads which were done in previous cosbench restart.
COSBench can recognize workload results which were generated by previous instance, and can
load or unload them on demand.

COSBench supports to manage those workloads through below approaches:




Reorder workloads in active list
Load/unload archived workloads
Re-submit historic or archived workloads

COSBench User Guide | 35

4 Configuring Workloads
4.1 Introduction
workload
auth
storage
workflow
workstage
auth
storage
work
auth
storage
operation

A workload is represented as an XML file with the following structure:


Workload  work stage  work  operation



If necessary, one workload can define one or more work stages.



Execution of multiple work stages is sequential, while execution of work in the same work stage
is parallel.



For each piece of work, “workers” is used to tune the load.



Authentication definition (auth) and storage definition (storage) can be defined at multiple
levels, and lower-level definitions overwrite upper-level ones. For example, operations use the
definitions for auth and storage at its work instead of those at workload level.

4.2 Selection Expression (also referred to as Selector)
4.2.1 Overview


In workload configuration, the elements below support one “config” attribute (auth, storage,
work, operation); the attribute contains an optional parameter list with key-value pairs that use
the format “a=a_val;b=b_val”.



Attribute

Parameter

COSBench User Guide | 36



In the parameter list, commonly used keys include “containers”, “objects”, and “sizes”, which
are used to specify how to select container, object, and size. One expression is used to help
define selection.



The number in an expression has a different meaning for object size versus object or container.
For object size, the number represents a quantity, while for object or container, the number
represents a numbering or label.

4.2.2 Selector
Expression

Format

Comments
Only use specified number

constant

c(number)

For example, c(1) means the element
numbering will be fixed in one fixed number
Select from [min, max] evenly

uniform

u(min, max)

For example, u(1,100) means the element
numbering is evenly selected from the 100
elements; the selection is random, and some
numbers may be selected more than once,
while some may never be selected
Select from [min,max] incrementally

range

r(min,max)

For example, r(1,100) means the element
numbering incrementally increases from min
to max, and each number is selected only
once; this is generally used in special stages
(init, prepare, cleanup, dispose), if it’s used in
normal stage, please make sure you
understand how to use it correctly (see FAQ
6.1.17 for details).
Select from [min,max] incrementally

sequential

s(min,max)

For example, s(1,100) means the element
numbering incrementally increases from min
to max, and each number is selected only
once. This is done thread-safe.

COSBench User Guide | 37

It provides a weighted histogram generator, to
configure it, specify a comma separated list of
buckets where each bucket is defined by a range
and an integer weight. For example:
histogram

h(min1|max1|weight1,…)

h(1|64|10,64|512|20,512|2048|30)KB
Which defines one profile where (1,64)KB is
weighted as 10, (64,512)KB is weighted as 20,
and (512,2048)KB is weighted as 30. The sum of
weights is not necessarily 100.

4.2.3 Allowable Combinations
There are additional constraints for selectors based on the element type and work type; the following
two tables list allowable combinations.

Selector versus Element:
constant
Key

uniform

range

sequential

histogram

(c(num)) (u(min,max)) (r(min,max)) (s(min,max)) (h(min|max|ratio))

containers









objects









sizes









Selector versus Work:

Key

init

prepare

normal (read)

normal (write)

normal
(delete)

containers

r(), s()

r(), s()

c(), u(), r(), s()

c(), u(), r(), s()

c(), u(), r(), s()

r(), s()

objects

r(), s()

c(), u(), r(), s()

c(), u(), r()

c(), u(), r(), s()

r(), s()

sizes

c(), u(),
h()

cleanup

dispose
r(), s()

c(), u(), h()

4.3 Workload
4.3.1 General Format


COSBench User Guide | 38

4.3.2 Attributes
Parameter

Type

Default

Comment

name

String

One name for the
workload

description

String

Some additional
information

4.4 Auth
4.4.1 General Format


4.4.2 Attributes
Attribute

Type

Default

Comment

type

String

none

Authentication type

config

String

Parameter list
[optional]

4.4.3 Authentication Mechanisms
 none (do nothing, default)


Parameter list:
Parameter

Type

Default

Comment

logging

Boolean

false

Print information to
log

retry

Int

0

Specifies number of
retry attempts if
authentication fails

False

Caching
authentication
information or not

Caching

Boolean

COSBench User Guide | 39

 mock (delay specified time)


Parameter list:
Parameter

Type

Default

Comment

token

String

“token”

Token string

delay

Long

20

Delay time in
milliseconds

0

Specifies number of
retry attempts if
authentication fails

retry

Int

 swauth (for OpenStack Swift)


Note that the IP address 192.168.250.36 should be replaced with the actual IP address
of the controller node.
Parameter list:
Parameter

Type

Default

Comment

auth_url

String

“http:/192.168.250.36:8080/auth/v1.0”

URL for auth
node

username

String

Username for
authentication.
Syntax h
account:user

password

String

Password for
authentication

timeout

Integer

retry

Int

30,000

Connection
timeout value in
milliseconds

0

Specifies number
of retry attempts
if authentication
fails

COSBench User Guide | 40

 keystone (for OpenStack Swift)


Note that the IP address 192.168.250.36 should be replaced with the actual IP address
of the controller node.
Parameter list:
Parameter

Type

Default

Comment

auth_url

String

“http://192.168.250.36:8080/auth/v2.0”

URL for auth
node

username

String

Username for
authentication.
Syntax
account:user

password

String

Password for
authentication

tenant_name

String

Name of tenant
to which the
user belongs

service

String

timeout

Integer

“swift”

Service
requested

30,000

Connection
timeout value in
milliseconds

retry

Int

0

Specifies number
of retry attempts
if authentication
fails

region

String

“regionOne”

Service region.

 httpauth (Http BASIC/DIGEST)


Note that the IP address 192.168.250.36 should be replaced with the actual IP address
of the controller node.

COSBench User Guide | 41

Parameter list:
Parameter

Type

Default

Comment

auth_url

String

“http://192.168.250.36:8080/”

URL for auth
node

username

String

Username for
authentication.

password

String

Password for
authentication

Integer

30,000

Connection
timeout value in
milliseconds

0

Specifies number
of retry attempts
if authentication
fails

timeout

retry

Int

4.5 Storage
4.5.1 General Format


4.5.2 Attributes
Attribute

Type

Default

Comment

type

String

“none”

Storage type

config

String

Parameter list
[optional]

4.5.3 Storage Systems
 none (do nothing, default)


COSBench User Guide | 42

Parameter list:
Parameter

Type

Default

Comment

logging

Boolean

false

Print information to
log

 mock (delay specified time)


Parameter list:
Parameter

Type

Default

Comment

logging

Boolean

false

Print information to
log

size

Integer

1024

Object size in bytes

delay

Integer

10

Delay time in
milliseconds

errors

Integer

0

Set error limit to
emulate failure

printing

Boolean

False

Print out data
content

 Swift (OpenStack Swift)


Parameter list:
Parameter

Type

Default

Comment

timeout

Integer

30,000

Connection timeout value in milliseconds

token

String

AUTH_xxx

Authentication token, this parameter is only
necessary if user expects to bypass
authentication.

storage_url

String

http://127.0.0.1:8080/aut
h/v1.0

The storage url, this parameter is only
necessary if user expects to bypass
authentication.

COSBench User Guide | 43

policy

Storage Policies is a feature introduced in
Swift 2.0 that allows applications to select a
different set of characteristics for their
storage on a per container basis. See the
latest Swift docs for full information at
http://docs.openstack.org/developer/swift/ov
erview_architecture.html.

String

It’s only necessary if user expects to leverage
different storage policy instead of the default.
transfer_rate Integer

This is to help limit transfer rate to designated
number, if 0 is set, it means working at besteffort mode.

50000000

 Ampli (Amplidata)


Parameter list:
Parameter

Type

Default

Comment

30,000

Connection timeout
value in
milliseconds

timeout

Integer

host

String

Controller node IP
to connect

port

Integer

Port

nsroot

String

policy

String

“/namespace”

Namespace root
Policy ID the
namespace will
access

 S3 (Amazon S3)


COSBench User Guide | 44

Parameter list:
Parameter

Type

Default

Comment

30,000

Connection timeout
value in
milliseconds

timeout

Integer

accesskey

String

The base64encoded username

secretkey

String

The base64encoded password

endpoint

String

http://s3.amazona
ws.com

The endpoint url
(the url s3 storage
exposes for external
access).

proxyhost

String

The http proxy host
name or ip address
if required.

proxyport

integer

The http proxy port
if required.

max_connections

Integer

50

The default max
connection pool
size.

path_style_access

boolean

false

Using S3 path style
access or not.

 Sproxyd (Scality)


COSBench User Guide | 45

Parameter list:
Parameter

Type

Default

Comment

hosts

String

127.0.0.1

Comma separated
list of host
names/IP
addresses. Requests
are load balanced
across all the hosts
using a simple
round robin
algorithm

port

integer

81

Port used by the
connector

/proxy/chord

Path to an sproxyd
profile (this profile
must have
by_path_enabled =
1)

60,10

The first value s the
size of the
connection pool.
The second value, if
provided, is the
maximum number
of connections for a
given HTTP route.

base_path

pool_size

String

integer or comma
separated pair of
integers

 Cdmi (SNIA CDMI)


COSBench User Guide | 46

Parameter list:
Parameter

type

Type

String

Customer_headers

Default

Comment

“cdmi”

Options: “cdmi” or “non-cdmi”, it
indicates the content type to be
used, “cdmi” means the storage
access will follow cdmi content
type, “non-cdmi” means the
storage access will follow noncdmi content type.
This is an experimental parameter
to see if possible to support cdmi
derivatives, which may require
additional headers. The
parameter may be removed
without notification.

String

 Cdmi_swift (SNIA CDMI for swift)


Parameter list:
Parameter

Type

Default

Comment

timeout

Integer

30,000

Connection timeout
value in
milliseconds

 librados (for Ceph)


COSBench User Guide | 47

Parameter list:
Parameter

Type

Default

Comment

endpoint

String

127.0.0.1

The endpoint could be e.g. the
monitor node.

accesskey

String

The username like “admin”.

secretkey

String

The secretkey is the key from the
admin keyring.

Note:
o

Don’t use librados to create containers (pools), they will default to only have 64 pgs,
which renders them pretty useless, see
http://ceph.com/docs/master/rados/operations/pools/

4.6 Work Stage
4.6.1 General Format



4.6.2 Attributes
Attribute

Type

name

String

Default

Comment
One name for the
stage

4.7 Work
4.7.1 General Format
 . . . 

There is one normal and four special types of work (init, prepare, cleanup, and dispose). Section 4.7
focuses on normal work, while Section 4.8 covers the special types of work. The form given above is
for a full set—different work types will have different valid forms. General rules are given below:

COSBench User Guide | 48




workers is a key attribute, normally used to control load.
runtime (including rampup and rampdown), totalOps and totalBytes are attributes that
control how to end the work, called ending options. Only one can be set in a work.

COSBench User Guide | 49

4.7.2 Attributes
Attribute

Type

name

String

type

String

workers

Integer

Number of workers
to conduct the work
in parallel

Integer

5

Interval between
performance
snapshots

“none”

[“none”|
“container”|
“object”], controls
how work is divided
between workers

0

How many seconds
the work will
execute

0

How many seconds
to ramp up
workload; this time
is excluded from
runtime

0

How many seconds
to ramp down the
workload; this time
is excluded from
runtime

0

How many
operations will
execute; it should
be a multiple of
workers

0

How many bytes
will transfer, it
should be a multiple
of the product of
workers and size.

interval

division

runtime

rampup

rampdown

totalOps

totalBytes

String

Integer

Integer

Integer

Integer

Integer

Default

Comment
One name for the
work

“normal”

Type of work

COSBench User Guide | 50

driver

string

afr

Integer

Which driver will
execute this work,
by default, all
drivers will
participate the
execution.
200000 – normal
0 – special work

Acceptable failure
rate, it’s in
millionth.

4.8 Special Work
4.8.1 General Format


Special work is different from normal work in the following ways:


It internally adopts and calculates “totalOps”, so no ending option need be explicitly
included in the configuration.



It has implicitly defined operations, so no operation is needed.



“delay” is different from others, which causes the work just sleeps for specified seconds.

4.8.2 Supported Special Work
 init (creating specific containers in bulk)


Parameter list:
Parameter

Type

Default

Comment
Container selection
expression; for
example:
c(1), r(1,100)

containers

String

cprefix

String

mycontainers_

Container prefix

csuffix

String



Container suffix

 prepare (inserting specific objects in bulk)


COSBench User Guide | 51

Parameter list:
Parameter

Type

Default

Comment
Container selection
expression; for
example:
c(1), u(1,100)

containers

String

cprefix

String

mycontainers_

Container prefix

csuffix

String



Container suffix
Object selection
expression; for
example:
c(1), u(1,100)

objects

String

oprefix

String

myobjects_

Object prefix

osuffix

String



Object suffix

sizes

String

chunked

Boolean

content

String

Size selection
expression with unit
(B/KB/MB/GB); for
example:
c(128)KB,
u(2,10)MB
False

“random”(default)
”zero”

Upload data in
chunked mode (or
not)
Fill object content
with random data
or all-zeros

createContainer

Boolean

False

Create related
container if it does
not exist

hashCheck

Boolean

False

Do work related to
object-integrity
checking

 cleanup (removing specific objects in bulk)


COSBench User Guide | 52

Parameter list:
Parameter

Type

Default

Comment
Container selection
expression; for
example:
c(1), u(1,100)

containers

String

cprefix

String

mycontainers_

Container prefix

csuffix

String



Container suffix
Object selection
expression; for
example:
c(1), u(1,100)

objects

String

oprefix

String

myobjects_

Object prefix

osuffix

String



Object suffix

deleteContainer

Boolean

False

Delete related
container if it exists

 dispose (removing specific containers in bulk)


Parameter list:
Parameter

Type

Default

Comment
Container selection
expression; for
example:
c(1), u(1,100)

containers

String

cprefix

String

mycontainers_

Container prefix

csuffix

String



Container suffix

 delay (inserting a few seconds delay)




COSBench User Guide | 53

Parameter list:
Parameter

Type

closuredelay

Integer

Default

Comment
How long to delay
in seconds.

4.9 Operation
4.9.1 General Format


4.9.2 Attributes
Attribute

Type

Default

Comment

type

String

ratio

Integer

division

Integer

Division strategy for this
operation

config

String

Parameter list

Operation type

4.9.3 Supported operations
 container/object naming convention:




By default, containers are named using the format “mycontainers_”, and objects are
named using the format “myobjects_”, where  is a number defined by one
selection expression in the parameter list.
Container/object naming can be modified through cprefix/csuffix or oprefix/osuffix.

 read


COSBench User Guide | 54

Parameter list:
Parameter

Type

Default

Comment
Container selection
expression; for
example:
c(1), u(1,100)

containers

String

cprefix

String

mycontainers_

Container prefix

csuffix

String



Container suffix
Object selection
expression; for
example:
c(1), u(1,100)

objects

String

oprefix

String

myobjects_

Object prefix

osuffix

String



Object suffix

False

Do work related to
object-integrity
checking

hashCheck

Boolean

 write


COSBench User Guide | 55

Parameter list:
Parameter

Type

Default

Comment
Container selection
expression; for
example:
c(1), u(1,100)

containers

String

cprefix

String

mycontainers_

Container prefix

csuffix

String



Container suffix
Object selection
expression; for
example:
c(1), u(1,100)

objects

String

oprefix

String

myobjects_

Object prefix

osuffix

String



Object suffix

sizes

String

chunked

Boolean

content

hashCheck

String

Boolean

Size selection
expression with unit
(B/KB/MB/GB); for
example:
c(128)KB,
u(2,10)MB
False

“random”(default)
“zero”

False

Upload data in
chunked mode (or
not)
Fill object content
with random data
or all zeros
Do work related to
object-integrity
checking

 filewrite


COSBench User Guide | 56

Parameter list:
Parameter

Type

Default

Comment
Container selection
expression; for example:
c(1), u(1,100)

containers

String

cprefix

String

mycontainers_

Container prefix

csuffix

String



Container suffix

String

Which selector should be
used only put selector
identifier (e.g. s for
sequential). *

files

String

Path to the folder
containing the files to be
uploaded. Path must exist

chunked

Boolean

False

Upload data in chunked
mode (or not)

hashCheck

Boolean

False

Do work related to objectintegrity checking

fileselection

*) Objects are not read by filename. Java reads the files in the folder in a random way. Use
Sequential selection to assure each object will be picked once, before the first object is picked a
second time. Limit the amount of objects put by using totalOps or runtime in your work
definition.

 delete


COSBench User Guide | 57

Parameter list:
Parameter

Type

Default

Comment
Container selection
expression; for
example:
c(1), u(1,100)

containers

String

cprefix

String

mycontainers_

Container prefix

csuffix

String



Container suffix
Object selection
expression; for
example:
c(1), u(1,100)

objects

String

oprefix

String

myobjects_

Object prefix

osuffix

String



Object suffix

 list


Parameter list:
Parameter

Type

Default

Comment
Container selection
expression; for
example:
c(1), u(1,100)

containers

String

cprefix

String

mycontainers_

Container prefix

csuffix

String



Container suffix
Object selection
expression; for
example:
c(1), u(1,100)

objects

String

oprefix

String

myobjects_

Object prefix

osuffix

String



Object suffix

COSBench User Guide | 58

4.9.4 Examples
 pure read
e.g: 100% read, 16 users, 300 seconds




 pure write
e.g.: 100% write, 8 clients, 600 seconds




 mixed operations
e.g.: 80% read, 20% write, 32 clients, 300 seconds





4.10 Additional comments
4.10.1 Overview
A few parameters need additional emphasis to make user define exact workload, this section
will cover them.

4.10.2 Division strategy
Division strategies are used to divide a work into multiple non-overlapping partitions which have
smaller ranges of containers or objects, there strategies are supported: container (based),
object (based), or none.
Different stage type has different default division strategy, for init/dispose, the default is
“container”, for prepare/cleanup, the default is “object”, and for normal, the default is “none”.

COSBench User Guide | 59

We will use one example to explain the difference between different division strategies, here is
a work as following:




If "division=container", it means the data range will be partitioned by container, the access
pattern looks like:
Worker

Container Range

Object Range

#1

1-2

1-1000

#2

3-4

1-1000

#3

5-6

1-1000

#4

7-8

1-1000

(Note: it's not supported if # of workers is larger than # of containers.)
If "division=object", it means the data range will be partitioned by object, the access pattern
looks like:
Worker

Container Range

Object Range

#1

1-8

1-250

#2

1-8

251-500

#3

1-8

501-750

#4

1-8

751-1000

(Note: it's not supported if the # of workers is larger than the # of objects.)
If "division=none", it is used to turn off division so that each worker does exactly what the work
has specified—there is no partitions of the work, so each worker may touch all containers or
objects.

COSBench User Guide | 60

5 Results
All results are stored in the “archive” directory.

5.1 Structure





.meta
o The starting run id
run-history.csv
o Record all historical workload runs, including time and major stages
workload.csv
o Record overall performance data for all historical workload runs
Sub-directories
o Prefixed with “w-” store data for each workload run

5.2 Per-Run Data
The following is a sample per-run data list:

COSBench User Guide | 61

5.2.1 Overall Performance Data (e.g., w1-demo.csv)
One line per stage:

5.2.2 Timeline Data (e.g., s3-main.csv)
One file per stage; can be imported into a spreadsheet program to draw a timeline chart, or processed
with csvtool:

5.2.3 Response-Time Histogram Data (e.g., w1-demo-rt-histogram.csv)
Distribution of response time is a valuable indicator to understand Quality of Service; histogram data is
generated for this purpose. The data is grouped from 0 to 500,000 ms with 10 ms stepping.
In a histogram diagram, the bar represents the number of samples in each grouping. The curve is the
Cumulative Distribution Function (CDF), which can reveal insights regarding topics such as the response
time at the 90th percentile.

COSBench User Guide | 62

90th Percentile

5.2.4 Response Time breakdown (e.g., s3-main.csv)
Beside average response time, average processing time will also be reported in data file, it would help
understand performance bottleneck through time breakdown.

5.2.5 Workload-config.xml


The workload configuration file used in this run

5.2.6 Workload.log


The run time log, which is helpful for troubleshooting

COSBench User Guide | 63

5.3 Metrics
5.3.1 Throughput (Operations/s or Op/s)



The operations completed in one second
The reported throughput is calculated by dividing total successful requests by total run time

5.3.2 Response Time (in ms)




The duration between operation initiation and completion
The reported Response Time is the average of response time for each successful request
One additional processing time is already reported to help breakdown response time.

5.3.3 Bandwidth (MB/s)




The total data in MB transferred per second
The reported bandwidth is calculated by dividing total bytes transferred by total run time
1 MB = 1000*1000 bytes

5.3.4 Success Ratio (%)



The ratio of successful operations
The reported success ratio is calculated by dividing the number of successful requests by the
total number of requests

5.3.5 Other Metrics



Op-count: total number of operations
Byte-count: total data transferred

COSBench User Guide | 64

6 FAQs
6.1 General
1. Is listening on port 19088/18088 configurable, and, if so, how?
Yes; conf/controller-tomcat-server.xml specifies the port to be used for the controller, and
driver-tomcat-server.xml specifies the port to be used for the driver.
2. What is the difference between “cancelled” and “terminated”?
“Cancelled” means the workload is cancelled by user at runtime, while “terminated” indicates
errors during runtime, which typically require user action for resolution.
3. Can I submit multiple workloads to be run sequentially?
Yes; COSBench can accept multiple workloads at one time and run them one by one.
4. Is it possible to cancel a queued workload?
No; cancellation is only for the running workload.
5. Can COSBench be installed on other Linux* distributions, such as Red Hat Enterprise Linux?
Yes; versions prior to v2.1 support Red Hat Enterprise Linux 6 by default, and versions beginning
with v2.1 have adopted Ubuntu 12.04.1 LTS as the default OS.
6. Is it possible to reuse the files from a previous test without removing or cleaning up the old
files?
Yes; the special stages such as init, prepare, cleanup, and dispose are all optional, and even
regarding the main stage, users can choose the stage sequence appropriate to their testing
requirements. To reuse data, the user needs to fill all data and perform all tests before the
cleanup and dispose stages (for example, in the sequence init, prepare, test1, test2, … cleanup,
dispose). A related sample workload configuration file is included in conf/reusedata.xml.
7. Is it possible to define multiple main or other stages?
Yes; to avoid name confusion, they should be named with different labels. For example, users
can define multiple init stages to create different container sets, or define multiple main stages
to perform different tests in one workload.
8. If errors occur on running workloads, where can users see more details?
There is one workload.log under that workload’s corresponding folder (archive\\workload.log); inspecting this file can help determine the cause of errors.
9. What steps should be taken to resolve a test being stuck at the init stage?
Verify that all COSBench machines are accessible through an HTTP connection using Curl (“curl
http://:19088/controller/index.html” or “curl http://:18088/driver/index.html”). If a firewall has blocked the HTTP connection, the user must
open the appropriate ports on the firewall. For the controller node, the ports are 19088 and
19089; for driver nodes, the ports are 18088 and 18089.
10. Is there a tool to distribute COSBench on multiple nodes?
Although COSBench itself does not provide a tool for this type of package distribution, many
external solutions exist for this purpose, such as scp and shared folder (samba).
11. Why does COSBench show a workload test as “complete,” even though there are errors
reported in workload.log?
A test may reflect “complete” status although errors are recorded in the log for normal work, as
long as special work has completed successfully.
COSBench treats “init”, ”prepare”, ”cleanup,” and “dispose” operations as special work that
must be completed without error to result in “completed” status; errors in special work will
terminate the test.
On the other hand, normal work associated with performance measurement can tolerate
failures, which are tracked by the “success ratio.”
12. Are there any recommendations for the number of workers in the “init”, “prepare”,
“cleanup,” and “dispose” stages?
Work performed in the “init” and “dispose” stages creates and deletes containers. In our testing
with Keystone plus Swift, these tasks can be completed in approximately three minutes with a
recommended ratio of one worker for every 32 containers, with 100 objects in each container
and a 64 KB object size. Generally, the number of containers should be defined as a multiple of
the number of workers.
Work performed in the “prepare” and “cleanup” stages creates or deletes objects, and the time
required depends on the number of objects. Generally, the number of objects should be defined
as a multiple of the number of workers. Increasing the number of workers can accelerate the
process.
Work performed in the “main” identifies bottlenecks, and tuning the workers parameter
controls the load to the storage system. The number of workers should be gradually increased
until performance decreases.
13. How can “OutOfMemory” errors from the driver be prevented after running COSBench for a
long time?
Maximum heap size for the Java process can be specified in the “cosbench-start.sh” script to
prevent exhausting memory. For example, the parameter “-Xmx2g” would limit the maximum
heap size to 2 GB.
14. How can read and write be split to different containers?
Users can assign containers to be accessed at the operation level, to split reads and writes to
different containers; the different container range can be set using the “containers” parameter
in “config” as follows:

COSBench User Guide | 66




One sample workload configuration file is included in conf/splitrw.xml.
15. How can different containers be specified for different configurations, such as those with
different object sizes?
Users can assign different container sets for different configurations using the “cprefix”
parameter. For example, users can differentiate between configurations with different sizes by
specifying an object size such as “64K” using “cprefix” to avoid confusion and unexpected
overwriting as follows:


In this case, the container name will be prefixed with “100M_” in the target storage system.
Users can take advantage of this capability by browsing to the location http://:8080/namespace as shown below:

16. When a workload is terminated, where can users obtain the log files to help troubleshoot the
issue?
Log files are located in two separate places:


In the “log” folder within the COSBench installation folder. The “system.log” file in this
location documents COSBench system activities, including the check for workload
configuration file. If a required parameter is missing or mistyped (for example, “sizes” in
the “prepare” stage), this file will contain an entry such as “driver report error: no such
key defined: sizes” as shown below:



In the “workload” folder in the “archive” folder within the COSBench installation
folder. The “workload.log” file in this location documents workload runtime activities. If

COSBench User Guide | 67

failed operations occur while the workload is running, an error (typically HTTP-related)
will be logged in this file.
17. Can I use range selector in normal stage, how to do it?
Yes, range selector can be used in normal stage, but it’s discouraged, as it will involve some
subtle constraints. Firstly, range selector normally needs combine with “totalOps” to terminate
the execution when all elements are enumerated. Secondly, the count of container should be
relatively-prime to the count of objects, otherwise, the actual access range is only one of the
greatest command divisor of the two counts. E.g., for below configuration, it’s expected to
create 1600 unique objects, but actually, it only creates 800 (=32*50/2) unique objects.




18. Can I run multiple drivers on the same node, how to do it?
Yes, COSBench doesn’t constraint how many drivers can run on the same node, but as by default
driver will listen on port 18088, to avoid port confliction, user needs set different driver process
to different listening ports.
To change the listening port, user needs edit conf/driver-tomcat-server.xml, and change “port”
value below to distinguished number for different driver


19. If there’s any way from COSBench side to identify which object was created failed ?
Yes, it’s possible to print out the object name, but it requires to change the logging level for
COSBench Driver processes. General steps are as following:
i)

On each driver node, creating one driver.conf file in conf/ folder with below lines if not
exists:
[driver]
Log_level = DEBUG

ii)

Restarting all driver processes

6.2 Swift
1. How can long prepare times associated with large object sizes (e.g., 1 GB) be avoided?
A large number of large objects can saturate network bandwidth, resulting in low performance.
If network bandwidth is not saturated, the “workers” parameter can be increased, to better
utilize bandwidth.
2. Are there any special changes for operating with large object sizes (e.g., 1 GB)?
Yes; for testing with large object sizes, consider the following:

COSBench User Guide | 68



Longer ramp-up time (specified using the parameter “rampup”) can help drive higher
performance, while longer run time (specified using the parameter “runtime”) can help
drive more consistent results. The optimal combination of settings for these parameters
depends on individual usage circumstances. To help determine appropriate settings, run
a test case with “runtime” set for a long run time (e.g., 30 minutes) without setting the
“rampup” parameter. Consult the resulting timeline curve to determine how many
seconds are needed to ramp up in this case; the “runtime” parameter can then be set to
10 times that “rampup” value.



As the time for each operation to complete increases, it becomes more likely that
timeout errors will occur; this effect can be mitigated using the “timeout” parameter in
“config”, which uses milliseconds as units. For Swift, typical syntax is as follows:




Users should also verify proper setup of the system under test, outside the scope of
COSBench itself; for example, errors or performance deficits may occur because of
improper setup of back-end storage.

3. How can the termination of workloads in the authentication phase be overcome when large
numbers of workers (e.g., 1024) are configured with Keystone, so that testing can be
completed successfully?
The new parameter “retry” is introduced for the “auth” section in the workload configuration
file to help overcome failures in the authentication phase. Following is a sample configuration:


4. How to test with tempauth?
Tempauth actually follows the same procedure as swauth, so just use swauth authentication
mechanism for tempauth.
5. Is storage policy supported, how to get it working?
Yes, the storage policy (http://docs.openstack.org/developer/swift/overview_architecture.html)
was supported starting from v0.4.0.0 release.
The supporting involves one new “policy” parameter as following:


Here “gold” could be replaced with any policy name user defines in “/etc/swift/swift.conf” as
following:
[storage-policy:0]
name = gold
default = yes
[storage-policy:1]

COSBench User Guide | 69

name = silver

In this case, the policy name may be “gold” or “silver”, which will be used in COSBench workload
configuration file.
For those who don’t care about storage policy, just remove “policy” parameter in swift workload
configuration file.

6.3 AmpliStor
1. Where does the system get the string for the policy in the .xml file?
Users can access the Amplidata controller node and manage the available policies by browsing
to the location http://:8080/manage/policy as shown below:

2. How can object range affect performance?
Expanding the object range may improve write performance by reducing write conflicts. For
example, changing “u(1,100)” to “u(1,10000)” will expand the object range from 100 objects to
10,000 objects.
3. How can one simplify policy UID settings?
Only the “init” stage needs policy UID; other stages such as prepare, main, cleanup, and dispose
don’t need to have the policy UID set. If there is no “init” stage in the workload, no policy UID is
needed.
4. How to use “nsroot” parameter in different stages?
“nsroot” parameter is introduced to support amplistor v2.5 and plus, where accessing
namespaces needs a separate root path from objects. So this parameter is only necessary for
the work involving namespace accessing like that in init/dispose stages. For other stages such as
prepare, main, cleanup, there are two options, one is just removing “nsroot” parameter,
another one is to set “nsroot” to “/namespace” instead of “/manage/namespace”.
If “nsroot=/manage/namespace” is set in main stage, normally, some similar exceptions will pop
up as below:
2013-11-20 10:45:33,764 [ERROR] [Writer] - fail to perform write operation

COSBench User Guide | 70

com.intel.cosbench.api.storage.StorageException:
org.apache.http.client.ClientProtocolException
...
Caused by: org.apache.http.client.NonRepeatableRequestException: Cannot retry
request with a non-repeatable request entity. The cause lists the reason the
original request failed.
...
Caused by: java.net.SocketException: Broken pipe
...

6.4 S3
1. What’s the usage for parameter “proxyhost” and “proxyport”?
In some cases (e.g., in corporate network), users need go through one http proxy to reach
Amazon S3 service, “proxyhost” and “proxyport” is used to give chance to configure http proxy
settings.
2. Can I route requests to specified region in Amazon S3?
S3 adaptor supports one parameter named "endpoint", which is capable to support routing
requests to different regions. e.g., setting "endpoint=https://s3-us-west-1.amazonaws.com"
will create buckets in Oregon region. Detailed s3 regions can be found at:
http://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region

6.5 Ceph
1. What approaches are supported to access Ceph Object Storage?
COSBench supports to access Ceph Object Storage through Rados Gateway, in this case the
exposed protocol for access could be S3 or Swift, depending on Rados Gateway configuration.
From user’s perspective, the Ceph cluster is a S3 or Swift compatible object storage, and the
workload configuration follows S3 or Swift’s configuration rules.
Also, COSBench could interact with Ceph Object Storage with Rados protocol through librados.
In this case, the storage adapter should be “librados”. One Caveat is the ceph librados package
should be installed on COSBench driver nodes.

6.6 CDMI
1. How to test swift through cdmi protocol?
The storage type “cdmi_swift” is for swift, one sample workload file conf/cdmi-swift-configsample.xml could help for reference.

COSBench User Guide | 71

2. Why using two different cdmi storage types?
COSBench includes two cdmi related adapters: cdmi and cdmi-swift, the major difference is on
authentication. CDMI standard adopts HTTP standard authentication mechanisms, while swift
uses token-based authentication. CDMI is a general protocol to help accommodate different
profiles in one standard, it’s open for extensions, and it’s expected to see more cdmi flavored
adapters.

COSBench User Guide | 72

Appendix A. Sample Configurations
Swift
The sample workload configuration describes the following test scenario:


The test includes five stages: init, prepare, main, cleanup, and dispose.



The test creates 32 containers, each containing 50 objects 64 KB in size.



The operation requests are issued to three controller nodes.



The requests include 80 percent GET(read) operations and 20 percent PUT(write) operations;
read operations randomly request an object from the 50 objects from #1 to #50, while write
operations randomly create objects with object numbering from #51 to #100.



At completion, the test cleans up all objects and drops all containers.

To use keystone authentication, use the commented keystone authentication line as a sample (note that
the IP address 192.168.250.36 should be replaced with the actual IP address of the controller node).
















COSBench User Guide | 73














AmpliStor
The workload configuration describes the following test scenario:


The test includes five stages: init, prepare, main, cleanup, and dispose.



The test creates 32 containers (namespaces), each containing 50 objects 64 KB in size.



The operation requests are issued to three controller nodes, and each controller node hosts two
client daemons.



The requests include 80 percent GET(read) operations and 20 percent PUT(write) operations;
read operations randomly request objects from the 50 objects numbered #1 to #50, while write
operations randomly create objects with object numbering from #51 to #100.



At completion, the test cleans up all objects and drops all containers (namespaces).

For the AmpliStor v2.5 release, “nsroot=/manage/namespace” is necessary for all namespace-related
work (init/dispose), for release prior to v2.5, just remove below “nsroot=/manage/namespace” snippets.








COSBench User Guide | 74







































COSBench User Guide | 75










As mentioned at the beginning of this guide,

COSBench also allows users to create adaptors for
additional storage systems. Please refer to the “COSBench Adaptor Development Guide” for details.

COSBench User Guide | 76



Source Exif Data:
File Type                       : PDF
File Type Extension             : pdf
MIME Type                       : application/pdf
PDF Version                     : 1.5
Linearized                      : No
Page Count                      : 76
Language                        : en-US
Tagged PDF                      : Yes
Author                          : Wang, Yaguang
Creator                         : Microsoft® Word 2013
Create Date                     : 2015:11:02 10:40:52+08:00
Modify Date                     : 2015:11:02 10:40:52+08:00
Producer                        : Microsoft® Word 2013
EXIF Metadata provided by EXIF.tools

Navigation menu