commit
1335b11d82
4 changed files with 58 additions and 17 deletions
|
@ -53,6 +53,7 @@ Test Description | Hardware | Duration |Avg TPS | TPS De
|
|||
8KB value, 50 workers, no_sync | 5 x d2.2x | 4 hr | 10,400.29 | <b>+ 8.37%</b> | <b>+ 23.51%</b>
|
||||
4KB value, 100 workers, no_sync | 5 x i2.2x | 6 hr | 14,993.95 | - 10.44% | - 4.48%
|
||||
16KB value, 60 workers, no_sync | 5 x i2.2x | 6 hr | 11,167.44 | <b>+ 80.48%</b> | <b>+ 113.55%</b>
|
||||
8KB value, 80workers, no_sync, 2i queries | 5 x i2.2x | 6 hr | 9,855.96 | <b>+ 4.48%</b> | <b>+ 22.36%</b>
|
||||
|
||||
Tests generally show a 5:1 improvement in tail latency for leveled.
|
||||
|
||||
|
|
|
@ -120,13 +120,14 @@ Both leveled and leveldb are optimised for finding non-presence through the use
|
|||
So it is better to focus on the results at the tail of the tests, as at the tail the results are a more genuine reflection of behaviour against the advertised test parameters.
|
||||
|
||||
|
||||
Test Description | Hardware | Duration |Avg TPS | Delta (Overall) | Delta (Last Hour)
|
||||
Test Description | Hardware | Duration |Avg TPS | TPS Delta (Overall) | TPS Delta (Last Hour)
|
||||
:---------------------------------|:-------------|:--------:|----------:|-----------------:|-------------------:
|
||||
8KB value, 60 workers, sync | 5 x i2.2x | 4 hr | 12,679.91 | <b>+ 70.81%</b> | <b>+ 63.99%</b>
|
||||
8KB value, 100 workers, no_sync | 5 x i2.2x | 6 hr | 14,100.19 | <b>+ 16.15%</b> | <b>+ 35.92%</b>
|
||||
8KB value, 50 workers, no_sync | 5 x d2.2x | 4 hr | 10,400.29 | <b>+ 8.37%</b> | <b>+ 23.51%</b>
|
||||
4KB value, 100 workers, no_sync | 5 x i2.2x | 6 hr | 14,993.95 | - 10.44% | - 4.48%
|
||||
16KB value, 60 workers, no_sync | 5 x i2.2x | 6 hr | 11,167.44 | <b>+ 80.48%</b> | <b>+ 113.55%</b>
|
||||
8KB value, 80workers, no_sync, 2i queries | 5 x i2.2x | 6 hr | 9,855.96 | <b>+ 4.48%</b> | <b>+ 22.36%</b>
|
||||
|
||||
Leveled, like bitcask, will defer compaction work until a designated compaction window, and these tests were run outside of that compaction window. So although the throughput of leveldb is lower, it has no deferred work at the end of the test. Future testing work is scheduled to examine leveled throughput during a compaction window.
|
||||
|
||||
|
@ -155,9 +156,48 @@ Testing during a journal compaction window
|
|||
|
||||
## Riak Cluster Test - Phase 4
|
||||
|
||||
to be completed ..
|
||||
Testing with secondary indexes provides some new challenges:
|
||||
|
||||
- Including index entries on updates will accelerate the flow of merges in the merge tree, as each update into the merge tree is now multiple changes;
|
||||
- The 2i query needs an efficient snapshot to be taken of the store, and multiple such snapshots to exist in parallel;
|
||||
- The coverage nature of the query means that the query operation is now as slow as the slowest of the vnodes (out of 22 nodes with a ring size of 64), rather than being as slow as the second slowest of three vnodes. Coverage queries are reactive to local resource pressure, whereas standard GET flows can work around such pressure.
|
||||
|
||||
The secondary index test was built on a test which sent
|
||||
|
||||
- 100 GET requests;
|
||||
- 10 update requests (i.e. GET then PUT) for 8KB fixed sized objects;
|
||||
- 10 update requests (i.e. GET then PUT) for 8KB fixed sized objects with four index entries each (leading to 4 index changes for a new request, 8 index changes for an update request);
|
||||
- 1 2i range query on the "date of birth" index with return_terms enabled;
|
||||
- 1 2i range query on the "postcode index" with return_terms enabled.
|
||||
|
||||
The query load is relatively light compared to GET/PUT load in-line with Basho recommendations (decline from 350 queries per second to 120 queries per second through the test). The queries
|
||||
return o(1000) results maximum towards the tail of the test and o(1) results at the start of the test.
|
||||
|
||||
Further details on the implementation of the secondary indexes for volume tests can be found in the [driver file](https://github.com/martinsumner/basho_bench/blob/mas-nhsload/src/basho_bench_driver_riakc_pb.erl) for the test.
|
||||
|
||||
Riak + leveled | Riak + leveldb
|
||||
:-------------------------:|:-------------------------:
|
||||
 | 
|
||||
|
||||
The results are similar as to previous tests. Although the test is on infrastructure with optimised disk throughput (and with no flushing to disk on write from Riak to minimise direct pressure from Riak), when running the tests with leveldb disk busyness rapidly becomes a constraining factor - and the reaction to that is volatility in throughput. Riak combined with leveldb is capable in short bursts of greater throughput than Riak + leveled, however when throttled within the cluster by a node or nodes with busy disks, the reaction is extreme.
|
||||
|
||||
The average throughputs hour by hour are:
|
||||
|
||||
Hour |Riak + leveled | Riak + leveldb | Delta
|
||||
:--------|-------------------------:|-------------------------:|--------
|
||||
1 | 14,465.64 | 16,235.83 | - 10.90%
|
||||
2 | 10,600.16 | 11,813.14 | - 10.27%
|
||||
3 | 8,605.89 | 7,895.84 | <b>+ 18.63%</b>
|
||||
4 | 9,366,19 | 7,225.25 | <b>+ 19.11%</b>
|
||||
5 | 8,180.88 | 6,826.37 | <b>+ 19.84%</b>
|
||||
6 | 7,916.19 | 6,469.73 | <b>+ 22.36%</b>
|
||||
|
||||
The point of inflection when leveled-backed Riak begins to out-perform leveledb-backed Riak is related to the total size of the database going beyond the size of the in-memory cache. The need to go to disk for reads as well as writes amplifies the disk busyness problem associated with write amplification.
|
||||
|
||||
As before, increasing the available CPU will increase the potential throughput of a leveled-backed cluster. Increasing the disk IOPS rate will increase the potential throughput of a leveldb-backed cluster. Increasing object sizes, will extend the throughput advantage of leveled and decreasing sizes will improve the performance of leveldb. Increasing the size of the database relative to cache may increase the throughput advantage of leveled - but this may not hold true for all work profiles (for example those frequently accessing recently updated objects).
|
||||
|
||||
In the 2i query test there is the same significant reduction in tail latency when comparing leveled with leveldb. For the 2i queries there is also a significant reduction in mean latency - a <b> 57.96%</b> reduction over the course of the test. However this reduction is not a sign that leveled can resolve 2i queries faster than leveldb - it is related to the problem of tail latency. The minimum response time for a 2i query in leveldb drifts from 4ms to 14ms as the test progresses - whereas the minimum response time for Riak and leveled fluctuates from 5ms through to 20ms at the end of the test. Outside of resource pressure leveldb will give a faster response - but resource pressure is much more likely with leveldb.
|
||||
|
||||
Testing for load including 2i queries
|
||||
|
||||
## Riak Cluster Test - Phase 5
|
||||
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 129 KiB |
Binary file not shown.
After Width: | Height: | Size: 102 KiB |
Loading…
Add table
Add a link
Reference in a new issue