leveled/docs/VOLUME.md
2017-02-02 13:13:30 +00:00

2.8 KiB

Volume Testing

Parallel Node Testing

Initial volume tests have been based on standard basho_bench eleveldb test to run multiple stores in parallel on the same node and and subjecting them to concurrent pressure.

This showed a relative positive performance for leveled for both population and load. This also showed that although the LevelEd throughput was relatively stable it was still subject to fluctuations related to CPU constraints. Prior to moving on to full Riak testing, a number of changes where then made to LevelEd to reduce the CPU load in particular during merge events.

Riak Cluster Test - 1

The First test on a Riak Cluster has been based on the following configuration:

  • A 5 node cluster
  • Using i2.2xlarge EC2 nodes with mirrored drives (for data partition only)
  • noop scheduler, transparent huge pages disabled, ext4 partition
  • A 64 vnode ring-size
  • 45 concurrent basho_bench threads (basho_bench run on separate disks)
  • AAE set to passive
  • sync writes enabled (on both backends)
  • An object size of 8KB
  • A pareto distribution of requests with a keyspace of 50M keys
  • 5 GETs for each update
  • 4 hour test run

This test showed a 73.9% improvement in throughput when using LevelEd, but more importantly a huge improvement in variance in tail latency. Through the course of the test the average of the maximum response times (in each 10s period) were

leveled GET mean(max) eleveldb GET mean(max)
21.7ms 410.2ms
leveled PUT mean(max) eleveldb PUT mean(max)
101.5ms 2,301.6ms

Tail latency under load is around in leveled is less than 5% of the comparable value in eleveldb (note there is a significant difference in the y-axis scale between the latency charts on these graphs).

leveled Results eleveldb Results

Riak Cluster Test - 2

to be completed ..

As above but on d2.2xlarge EC2 nodes for HDD comparison

Riak Cluster Test - 3

to be completed ..

Testing with optimised GET FSM (which checks HEAD requests from r nodes, and only GET request from one node if no sibling resolution required)

Riak Cluster Test - 4

to be completed ..

Testing with optimised PUT FSM (switching from GET before PUT to HEAD before PUT)

Riak Cluster Test - 5

to be completed ..

Testing with changed hashtree logic in Riak so key/clock scan is effective

Riak Cluster Test - 6

to be completed ..

Testing during a journal compaction window

Riak Cluster Test - 7

to be completed ..

Testing for load including 2i queries