Updated on 2024-10-08 GMT+08:00

Performance Test Methods

This section describes performance testing of GeminiDB Cassandra instances, including the test environment, procedure, and results.

Test Environment

  • Region: AP-Singapore
  • AZ: AZ1, AZ2, and AZ3 (three-AZ deployment)
  • Elastic Cloud Server (ECS): h3.4xlarge.2 with 16 vCPUs, 32 GB of memory, and CentOS 7.5 64-bit image
  • Nodes per instance: 3
  • Instance specifications: All specifications described in Table 1
    Table 1 Instance specifications

    No.

    Specifications

    Cluster 1

    4 vCPUs | 16 GB

    Cluster 2

    8 vCPUs | 32 GB

    Cluster 3

    16 vCPUs | 64 GB

    Cluster 4

    32 vCPUs | 128 GB

Test Tool

YCSB is an open-source tool for testing performance of databases. In this test, YCSB 0.15.0 is used. RoundRobinPolicy is used for load balancing.

For details on how to use this tool, see YCSB.

Test Metrics

Operations per Second (OPS): operations executed by a database per second

Test Procedure

  1. Configure the workload file.

    Set values for fields readproportion, insertproportion, updateproportion, scanproportion, and readmodifywriteproportion in the file by referring to Table 2.

    Set a value for field recordcount in the file by referring to Table 3.

  2. Use workload-insert-mostly as an example. Run the following command to prepare test data:

    sh bin/ycsb.sh load cassandra-cql -P workloads/workload-insert-mostly -p "hosts=${ContactPoints}" -p "port=${port}" -p "cassandra.username=${username}" -p "cassandra.password=${password}" -p operationcount=400000000 -p recordcount=400000000 -p exportfile=./data_load.exp -threads ${threadNum} -s > data_load.log 2>&1 &

  3. Use workload-insert-mostly as an example. Run the following command to test performance:

    sh bin/ycsb.sh run cassandra-cql -P workloads/workload-insert-mostly -p "hosts=${ContactPoints}" -p "port=${port}" -p "cassandra.username=${username}" -p "cassandra.password=${password}" -p operationcount=9000000 -p recordcount=9000000 -p maxexecutiontime=3600 -p exportfile=./workload-insert-mostly.exp -threads ${threadNum} -s > workload-insert-mostly_run.log 2>&1 &

Test Models

  • Workload model
    Table 2 Workload models

    Workload Model

    Description

    More read requests than write requests

    workload-read-mostly

    95% read, 5% update

    Balanced read and write requests

    workload-read-write-combination

    50% update, 50% read

    Balanced read and rewrite requests

    workload-read-modify-write

    50% read, 50% read-modify-write

    Read, update, and write requests

    workload-mixed-operational-analytical

    65% read, 25% update, 10% insert

    More write requests than read requests

    workload-insert-mostly

    90% insert, 10% read

  • Data model

    fieldlength = 100, fieldcount = 10

  • Preset data volume

    Different preset data volumes were used to test performance of instances of each type of specifications.

    The following table describes the preset data volumes.

    Table 3 Preset data volumes

    No.

    Specifications

    Preset Data Volume

    Cluster 1

    4 vCPUs | 16 GB

    50 GB

    Cluster 2

    8 vCPUs | 32 GB

    100 GB

    Cluster 3

    16 vCPUs | 64 GB

    200 GB

    Cluster 4

    32 vCPUs | 128 GB

    400 GB