Skip to content

Instantly share code, notes, and snippets.

@blambov
Created May 26, 2022 07:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save blambov/00e8dbff5a97f321d30d0ef992465a08 to your computer and use it in GitHub Desktop.
Save blambov/00e8dbff5a97f321d30d0ef992465a08 to your computer and use it in GitHub Desktop.
memtable_config: trie
extra_def:
extra_def2:
repository: blambov/cassandra
branch: CASSANDRA-17240
domination_op: "ToLongFunction(CoinFunc(0.5,FixedValue(25L),Identity()))"
readop: "Save('cycles'); Pareto(1.0, 2.0); Save('offset'); Expr('(long) (cycles / offset)'); Eval('block = ((long)(cycle / (9 + 1))) * (9 + 1); rem = cycle % 9; if (rem > 0) ++rem; return block + rem;')"
disk_access_mode: mmap_index_only
chunk_cache_mb: 8192
compaction: "{'class': 'SizeTieredCompactionStrategy'}"
compactors: 30
cluster_ttl: 5days
memtable_onheap: 16384
memtable_offheap: 16384
memtable_allocation_type: offheap_objects
Note: Trie, 50% skew
---
ensemble:
observer:
node.count: 1
provisioner:
name: ctool
properties:
cloud.provider: nebula
cloud.tenant: dse-automation
cloud.instance.type: m3.large
cloud.instance.platform: bionic
cluster_ttl: {{cluster_ttl}}
configuration_manager:
- name: ctool_monitoring
properties:
graphite.create_server: true
components: OS
graphite.collect_from_self: false
save_graphs: false
export.enabled: True
export.prefix: density-throughput.1nodes
export.metrics:
- AVERAGE_CONTEXT_SWITCH
- AVERAGE_LOAD
- AVERAGE_DISK_IO
- AVERAGE_MEMORY
- AVERAGE_NETWORK_IO
- AVERAGE_CPU
- AVERAGE_GC
server:
node.count: 1
provisioner:
name: ctool
properties:
cloud.provider: nebula
cloud.tenant: bignode
cloud.instance.type: i3.4xlarge
cloud.instance.platform: bionic
cluster_ttl: {{cluster_ttl}}
configuration_manager:
- name: ctool
properties:
product.type: cassandra
product.install.type: git
product.version: {{branch}}
product.start: false
cassandra.git.repo: git@github.com:{{repository}}
server.ssl: false
java.version: "11.0.6"
cassandra.jvm.opts: >
-Xmx31G
-Xms31G
-XX:+UnlockCommercialFeatures
-XX:+FlightRecorder
-XX:+PreserveFramePointer
-XX:+UnlockDiagnosticVMOptions
-XX:+DebugNonSafepoints
-XX:+UnlockExperimentalVMOptions
-XX:G1NewSizePercent=12
-XX:G1MaxNewSizePercent=50
{{extra_def}}
{{extra_def2}}
cassandra.yaml:
allocate_tokens_for_local_replication_factor: 1
concurrent_compactors: {{compactors}}
compaction_throughput: 0MiB/s
memtable_flush_writers: 8
commitlog_total_space: 51200MiB
commitlog_segment_size: 320MiB
memtable_heap_space: {{memtable_onheap}}MiB
memtable_offheap_space: {{memtable_offheap}}MiB
memtable_allocation_type: {{memtable_allocation_type}}
concurrent_reads: 256
concurrent_writes: 256
disk_access_mode: {{disk_access_mode}}
file_cache_size: {{chunk_cache_mb}}MiB
key_cache_migrate_during_compaction: false
commitlog_compression:
- class_name: LZ4Compressor
memtable:
configurations:
trie:
class_name: TrieMemtable
trie_explicit_lock:
class_name: TrieMemtable
parameters:
track_locking: true
skip_list:
class_name: SkipListMemtable
sharded_skip_list:
class_name: ShardedSkipListMemtable
parameters:
serialize_writes: false
blocking_skip_list:
class_name: ShardedSkipListMemtable
parameters:
serialize_writes: true
cassandra.vnode.count: 8
product.start.batch.size: 1
- name: ctool_monitoring
properties:
components: OS,JVM,CASSANDRA-CORE
save_graphs: true
- name: remote_files
properties:
files:
- git:
repo: stargazer
client:
node.count: 11
provisioner:
name: ctool
properties:
cloud.provider: nebula
cloud.tenant: bignode
cloud.instance.type: i3.xlarge
cluster_ttl: {{cluster_ttl}}
configuration_manager:
# using 2.1.25-caas to avoid an NPE (until there's a newer release tag in github)
- name: ebdse
properties:
version: 2.1.25-caas-SNAPSHOT
- name: ctool
properties:
install.maven: true
java.version: "11.0.6"
workload:
phases:
- configure_JVM:
module: bash
properties:
script: |
cd
chmod a+x $FALLOUT_LIBRARY_DIR/stargazer/test/scripts/use-g1gc.sh
$FALLOUT_LIBRARY_DIR/stargazer/test/scripts/use-g1gc.sh
target.group: server
timeout: 5m
- start_db:
module: ctool
properties:
command: start <cluster> cassandra
server_group: server
repeat.iterations: 1
#
# SETUP SCHEMA
#
- schema:
module: ebdse
properties:
client.ordinals: 0
yaml.url: https://gist.githubusercontent.com/blambov/5571433e27b007342c7b5e02f1744101/raw/338c95accc732e4babb437ca7aa009c0fe78a8fb/density_pk_ck_blob.yaml
run.tag: phase:schema
showcql: true
driver.opts: .withSocketOptions(new SocketOptions().setReadTimeoutMillis(20000)).withProtocolVersion(ProtocolVersion.V4)
extra.options:
keyspace: density
rf: 1
- memtable_setup:
module: cqlsh
properties:
command: "ALTER TABLE density.blobs WITH memtable = '{{memtable_config}}' AND compaction = {{compaction}};"
#
# 1TB THROUGHPUT
#
- throughput:
module: ebdse
properties:
cycles: 1B
cycle.offset: '0000000000'
yaml.url: https://gist.githubusercontent.com/blambov/5571433e27b007342c7b5e02f1744101/raw/338c95accc732e4babb437ca7aa009c0fe78a8fb/density_pk_ck_blob.yaml
run.tag: "phase:main"
timeout: 60h
histogram.frequency: 30s
threads: 200
maxtries: 10
errors: histogram
driver.opts: .withSocketOptions(new SocketOptions().setReadTimeoutMillis(20000)).withProtocolVersion(ProtocolVersion.V4)
extra.options:
pooling: 8:8:128
keyspace: density
key-count: 500000000000L
ckey-count: 1000000L
blob-len: 100
read_ratio: 1
write_ratio: 9
readop: {{readop}};{{domination_op}}
writeop: {{domination_op}}
- flush_to_disk_after_init_load:
module: nodetool
properties:
command: flush
- tablestats_after_init_load:
module: nodetool
properties:
command: tablestats density
- compactionstats_after_init_load:
module: nodetool
properties:
command: compactionstats --human-readable
- density_check_after_init_load:
module: bash
properties:
target.ordinals: all
script: |
DATA_DIR=`echo ${FALLOUT_SERVER_PRODUCT_DATADIRECTORIES} | sed -E "s/\[(.*)\]/\1/"`
cd ${DATA_DIR}/density || exit $?
echo "Keyspace size after initial workload of 1B cycles: `du -bsh`"
echo "SSTable count: `ls **/*Data.db -1 | wc -l`"
echo "Data files"
du **/*Data.db -cbh
echo "Index files"
du **/*Index.db **/*Summary.db -cbh || true
du **/*Rows.db **/*Partitions.db -cbh || true
echo "Bloom filter files"
du **/*Filter.db -cbh || true
- single_client_throughput:
module: ebdse
properties:
client.ordinals: 0
cycles: 50m
cycle.offset: '1000000000'
yaml.url: https://gist.githubusercontent.com/blambov/5571433e27b007342c7b5e02f1744101/raw/338c95accc732e4babb437ca7aa009c0fe78a8fb/density_pk_ck_blob.yaml
run.tag: "phase:main"
timeout: 20h
histogram.frequency: 30s
threads: 200
maxtries: 10
errors: histogram
driver.opts: .withSocketOptions(new SocketOptions().setReadTimeoutMillis(20000)).withProtocolVersion(ProtocolVersion.V4)
extra.options:
pooling: 8:8:128
keyspace: density
key-count: 500000000000L
ckey-count: 1000000
blob-len: 100
read_ratio: 1
write_ratio: 9
readop: {{readop}};{{domination_op}}
writeop: {{domination_op}}
- compactionstats_after_single_client:
module: nodetool
properties:
command: compactionstats --human-readable
- wait_for_compactions:
module: wait_for_compactions
properties:
timeout: 40h
- compactionstats_after_wait_for_compactions:
module: nodetool
properties:
command: compactionstats --human-readable
- density_check_after_compaction:
module: bash
properties:
target.ordinals: all
script: |
DATA_DIR=`echo ${FALLOUT_SERVER_PRODUCT_DATADIRECTORIES} | sed -E "s/\[(.*)\]/\1/"`
cd ${DATA_DIR}/density || exit $?
echo "Keyspace size after initial workload of 1B cycles: `du -bsh`"
echo "SSTable count: `ls **/*Data.db -1 | wc -l`"
echo "Data files"
du **/*Data.db -cbh
echo "Index files"
du **/*Index.db **/*Summary.db -cbh || true
du **/*Rows.db **/*Partitions.db -cbh || true
echo "Bloom filter files"
du **/*Filter.db -cbh || true
#
# CONSTANT THROUGPUT 10k/client 90/10 writes to reads
#
- latency_9_1:
module: ebdse
properties:
cycles: 50M
cycle.offset: '1050000000'
yaml.url: https://gist.githubusercontent.com/blambov/5571433e27b007342c7b5e02f1744101/raw/338c95accc732e4babb437ca7aa009c0fe78a8fb/density_pk_ck_blob.yaml
run.tag: phase:main
timeout: 20h
histogram.frequency: 10s
threads: 200
maxtries: 10
errors: histogram
driver.opts: .withSocketOptions(new SocketOptions().setReadTimeoutMillis(20000)).withProtocolVersion(ProtocolVersion.V4)
extra.parameters: cyclerate=10000
extra.options:
pooling: 8:8:128
keyspace: density
key-count: 500000000000L
ckey-count: 1000000
blob-len: 100
write_ratio: 9
read_ratio: 1
readop: {{readop}};{{domination_op}}
writeop: {{domination_op}}
- compactionstats_after_9_1:
module: nodetool
properties:
command: compactionstats --human-readable
- wait_for_compactions_after_9_1:
module: wait_for_compactions
properties:
timeout: 4h
- latency_1_1:
module: ebdse
properties:
cycles: 50M
cycle.offset: '1100000000'
yaml.url: https://gist.githubusercontent.com/blambov/5571433e27b007342c7b5e02f1744101/raw/338c95accc732e4babb437ca7aa009c0fe78a8fb/density_pk_ck_blob.yaml
run.tag: phase:main
timeout: 20h
histogram.frequency: 10s
threads: 200
maxtries: 10
errors: histogram
driver.opts: .withSocketOptions(new SocketOptions().setReadTimeoutMillis(20000)).withProtocolVersion(ProtocolVersion.V4)
extra.parameters: cyclerate=10000
extra.options:
pooling: 8:8:128
keyspace: density
key-count: 500000000000L
ckey-count: 1000000
blob-len: 100
write_ratio: 1
read_ratio: 1
readop: {{readop}};{{domination_op}}
writeop: {{domination_op}}
- compactionstats_after_1_1:
module: nodetool
properties:
command: compactionstats --human-readable
- wait_for_compactions_after_1_1:
module: wait_for_compactions
properties:
timeout: 4h
- read_only:
module: ebdse
properties:
cycles: 50M
cycle.offset: '1000000000' # read only what is definitely written (and compacted) already
yaml.url: https://gist.githubusercontent.com/blambov/5571433e27b007342c7b5e02f1744101/raw/338c95accc732e4babb437ca7aa009c0fe78a8fb/density_pk_ck_blob.yaml
run.tag: phase:main,type:read
timeout: 20h
histogram.frequency: 10s
threads: 200
maxtries: 10
errors: histogram
driver.opts: .withSocketOptions(new SocketOptions().setReadTimeoutMillis(20000)).withProtocolVersion(ProtocolVersion.V4)
extra.parameters: cyclerate=10000
extra.options:
pooling: 8:8:128
keyspace: density
key-count: 500000000000L
ckey-count: 1000000
blob-len: 100
write_ratio: 0
read_ratio: 1
readop: {{readop}};{{domination_op}}
- compactionstats_at_end:
module: nodetool
properties:
command: compactionstats --human-readable
# See STAR-495 for details.
- abort_compactions:
module: nodetool
properties:
command: stop
# STAR-495: try to force stop cluster
- stop_cluster:
module: ctool
properties:
command: stop <cluster>
checkers:
verify_success:
checker: nofail
artifact_checkers:
process_hdr:
artifact_checker: hdrtool
systemlog:
artifact_checker: systemlog
properties:
# Exclude some ignorable errors:
# (DB-4326) ERROR [NodeSync-1] 2020-04-09 19:13:57,744 Validator.java:534 - Unexpected error during synchronization of table density.blobs on range (-4367881493559736674,-3859638876736486136] (the range will be retried shortly, but please report to DataStax support, especially if this error persists)
error.pattern: >
^(ERROR|FATAL)
(?!.*NodeSync.*the\srange\swill\sbe\sretried\sshortly)
.*
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment