COSBench Benchmarks
COSBench is Intel's distributed object-storage benchmark — a Controller + Drivers cluster that executes staged XML workloads. Use it for complex, multi-stage read/write workloads, distributed across multiple driver nodes, with mixed operation types.
For when to pick COSBench over Warp or httpbench, see Choosing a Benchmark Tool. For reference throughput from a 4-driver COSBench cluster, see Reference Performance Baselines.
Prerequisites
Operating System: CentOS 7 (kernel 3.10) or later. COSBench has known compatibility issues on Ubuntu and is not recommended.
Pre-loaded data: For hot-read benchmarks (cache hit), ensure your test dataset is fully loaded into the Alluxio cache. Use
bin/alluxio job load --path /path --submitto load data andbin/alluxio fs check-cached /pathto verify.
Installation
On all COSBench controller and driver nodes:
Download COSBench version 0.4.2.c4 and unzip it.
Install dependencies:
sudo yum install nmap-ncat curl java-1.8.0-openjdk-devel -yDisable MD5 validation — edit
cosbench-start.shand add the following Java property. This is necessary for compatibility with Alluxio's S3 API:-Dcom.amazonaws.services.s3.disableGetObjectMD5Validation=trueStart the controller and all drivers from the COSBench root directory:
sudo bash start-all.sh
Usage
Running any scenario below follows the same three steps. Pick an XML workload (see subsections below or write your own), save it under conf/, then:
A COSBench workload is made up of these stages:
init
Creates the test buckets
prepare
Writes the initial data for testing
main
Runs the read/write operations for a set duration
cleanup
Deletes the objects created during the test
dispose
Deletes the buckets
If you are using Alluxio mount points, you cannot create new buckets via the S3 API. Skip the init and dispose stages and use pre-existing buckets that match your mount configuration.
COSBench config syntax:
r(1,10)— range: sequentially iterates over items 1 through 10. Used ininit,prepare,cleanup, anddisposestages.u(1,10)— uniform random: randomly selects an item between 1 and 10. Used inmainstage for realistic access patterns.c(64)KB— constant: fixed size of 64KB per object.
Bucket naming: COSBench appends a numeric suffix to cprefix. For example, cprefix=my-bucket;containers=r(1,1) creates a bucket named my-bucket1, not my-bucket. When using pre-existing buckets (e.g., Alluxio mount points), set cprefix so the generated names match exactly — for a bucket named my-bucket1, use cprefix=my-bucket with containers=r(1,1).
Scenario: Basic Read/Write Workload
Goal: Verify basic S3 read/write functionality with a small dataset.
Creates two buckets, writes 10 objects of 64 KB to each, runs a 30-second test with an 80/20 read-write ratio, and then cleans up.
The accesskey and secretkey below are placeholder values. Replace them with your Alluxio S3 API credentials.
Scenario: High-Concurrency Read Test
Goal: Measure maximum read IOPS/throughput under heavy concurrency. Key difference from the basic example: uses 4 distributed drivers with 128 threads each.
Prepares 10,000 small objects (100 KB) and uses four drivers, each with 128 worker threads, to read concurrently for 300 seconds.
Each <work> block is repeated per driver because COSBench requires explicit driver assignment for distributed workloads. Each block sends traffic from a separate driver node to maximize aggregate concurrency.
Troubleshooting
initstage fails against Alluxio — Alluxio mount points do not support bucket creation via S3 API. Skipinit/disposestages and use pre-existing buckets.
For cross-tool troubleshooting (redirect-mode behavior, kernel tuning, cache-hit verification), see Performance Tuning and Troubleshooting on the hub page.
See Also
S3 API Benchmarks — overview, reference baselines, tool selection, cross-tool troubleshooting
Warp Benchmarks — quick single-binary alternative for bucket-wide reads
httpbench Benchmarks — per-worker, redirect-aware tool
S3 API Setup and Configuration — deployment patterns, endpoint setup, load balancer configuration
Last updated