Core Workloads

nickmbailey edited this page Oct 6, 2010 · 4 revisions

YCSB includes a set of core workloads that define a basic benchmark for cloud systems. Of course, you can define your own workloads, as described in Implementing New Workloads. However, the core workloads are a useful first step, and obtaining these benchmark numbers for a variety of different systems would allow you to understand the performance
tradeoffs of different systems.


The core workloads consist of six different workloads:


Workload A: Update heavy workload


This workload has a mix of 50/50 reads and writes. An application example is a session store recording recent actions.


Workload B: Read mostly workload

This workload has a 95/5 reads/write mix. Application example: photo tagging; add a tag is an update, but most operations are to read tags.


Workload C: Read only


This workload is 100% read. Application example: user profile cache, where profiles are constructed elsewhere (e.g., Hadoop).


Workload D: Read latest workload


In this workload, new records are inserted, and the most recently inserted records are the most popular. Application example: user status updates; people want to read the latest.


Workload E: Short ranges


In this workload, short ranges of records are queried, instead of individual records. Application example: threaded conversations, where each scan is for the posts in a given thread (assumed to be clustered by thread id).

Workload F: Read-modify-write

In this workload, the client will read a record, modify it, and write back the changes. Application example: user database, where user records are read and modified by the user or to record user activity.

Running the workloads

All six workloads have a data set which is similar. Workloads D and E insert records during the test run. Thus, to keep the database size consistent, we recommend the following sequence:


  1. Load the database, using workload A’s parameter file (workloads/workloada) and the “-load” switch to the client.
  2. Run workload A (using workloads/workloada and “-t”) for a variety of throughputs.
  3. Run workload B (using workloads/workloadb and “-t”) for a variety of throughputs.
  4. Run workload C (using workloads/workloadc and “-t”) for a variety of throughputs.
  5. Run workload F (using workloads/workloadf and “-t”) for a variety of throughputs.
  6. Run workload D (using workloads/workloadd and “-t”) for a variety of throughputs. This workload inserts records, increasing the size of the database.
  7. Delete the data in the database.
  8. Reload the database, using workload E’s parameter file (workloads/workloade) and the "-load switch to the client.
  9. Run workload E (using workloads/workloade and “-t”) for a variety of throughputs. This workload inserts records, increasing the size of the database.