-
Notifications
You must be signed in to change notification settings - Fork 5
CAPI RowCache Performance
This page shows the performance results of CAPI-RowCache. We ran read-100% and read-80%/update-20% workloads in the Yahoo! Cloud Serving Benchmark. The data set was stored in a NVMe flash card and was 200-GB large. The machine had 64-GB main memory, so Cassandra's original RowCache did not help because it could not cache the entire data set. We used 820 GB in a CAPI Flash card for CAPI-RowCache.
This figure shows the results of read 100%. CAPI-RowCache was 84% faster than the original Cassandra.
This figure shows the results of read 80%/update 20%. CAPI-RowCache was 65% faster.
In the original Cassandra, almost all of the read requests went to SSTables on the NVMe flash card. With CAPI-RowCache, after the warm-up, almost all of the read requests were served from CAPI-RowCache, which also internally uses NVMe flash storage but provides lower-overhead access.
YCSB
- YCSB 0.12.0
- 400,000,000 operation count
- 200 YCSB client threads in total
- 10 YCSB client instances
Apache Cassandra
- trunk commit 1d7466425b96dcf4e1ebf68eceed4858fbbd6e29
- concurrent_reads: 512
- concurrent_writes: 512
- concurrent_counter_writes: 512
- memtable_flush_writers: 32
- src/java/org/apache/cassandra/transport/RequestThreadPoolExecutor.java#MAX_QUEUED_REQUESTS = 512
- native_transport_max_threads: 512
- row_cache_size_in_mb: 128
- 18-GB Java heap
Machine
- POWER8 8335-GCA (3.5GHz)
- 64GB DDR4 main memory
- SMT8
- One NUMA node (10 cores) dedicated for Apache Cassandra, the other NUMA node dedicated for YCSB clients
- performance CPU governor used
- Ubuntu 16.04.1
- HGST Ultrastar SN100 NVMe SSD
CAPI Flash and CAPI-RowCache
- NVMe edition (EJ1K)
- -Dcapi.devices=/dev/sg0:0:410,/dev/sg1:0:410
- -Dcapi.hash=org.apache.cassandra.cache.capi.YCSBKeyHashFunction