Using COSBench with ECS

COSBench Overview


COSBench is a benchmarking tool used to gauge the performance of Cloud Object Services, such as those founded on S3 or Swift, and additionally including support for testing against many other storage configuration. You can obtain COSBench as a git repository or download it as release package.


While the default S3 driver is compatible with ECS by default, our driver adds advantages such as server-side load balancing, improved object handling of ECS, and separation of connection and read timeout thresholds, all providing the user with a better representation of system performance. The ECS driver is available as part of the COSBench master branch and will be available as part of future pre-packaged releases; versions of the driver compatible with v0.4.1.x and earlier are available on request.





The following will add the ECS driver to an existing COSBench installation. This is only necessary for installations not already bundled with the ECS driver (e.g. prepackaged releases, those not downloaded as git pull from the master branch).


After setting up your COSBench environment as outlined in the User Guide, there are a few more steps you will need

to take in order to add the ECS plugin to your environment. For the COSBench distribution located on the driver


  • Add the cosbench‐ecs_[version].jar package to the /osgi/plugins folder of your COSBench distribution.
  • Add the line
    to the file /conf/.driver/config.ini within the block of similarly-formatted lines.
  • Add cosbench-ecs_${VERSION} to the list of OSGI_BUNDLES in in the main distribution directory



Workload Configuration


Using the EMC ECS driver is simple as setting storage type in the relevant header to ecs.

The following settings can be also be changed in the config:

  • accesskey - The access key (object user ID) to use for the workload.
  • secretkey - The S3 secret key (password) for the object user.
  • endpoint - The endpoint to test against, formatted as http[s]://<endpoint>:<port>. Specify port 9020 for HTTP and 9021 for HTTPS with SSL. May be a comma-delimited list of nodes.
  • namespace - The namespace for the specified access key (object user). Optional.
  • timeout - Connection timeout (in ms) for operations in this workload. Defaults to 30000. Optional.
  • read_timeout - Timeout for read operations in this workload. Defaults to whatever timeout is set to. Optional.
  • path_style_access - Whether to use path-style addressing. Defaults to false (using host-style addressing)
  • http_client - Whether to use a java or apache http client. Apache supports 100-continue headers, but java has better performance in some environments. Defaults to apache.
  • use_smart_client - Whether to use ECS' smart java client, which includes client-side load balancing, automatic detection of nodes in the endpoint's cluster, and some performance enhancements. Defaults to true.

An example header using all of these options:


<storage type="ecs" config="accesskey=testuser;secretkey=VPNVtEAgStcEbaPTeKt+LERTnsNG0FHMvYcZlp9n;endpoint=;timeout=50000;read_timeout=100000;namespace=testing;path_style_access=false;http_client=java;use_smart_client=true" />



For further information configuring workloads and general use of the tool, please refer to the user guide included in the main COSBench repository.