All Products
Search
Document Center

Tair (Redis® OSS-Compatible):Whitepaper performa instans berbasis SSD

Last Updated:Jul 10, 2026

Dokumen ini mencakup lingkungan pengujian, tooling, metodologi, dan hasil benchmark performa instans Tair (Edisi Perusahaan) berbasis SSD.

Lingkungan pengujian

Item

Description

Region and zone

Hangzhou Zone J

Instance architecture

Standard master-replica architecture. Untuk detailnya, lihat Standard architecture.

Stress testing host

Instans Elastic Compute Service (ECS) tipe ecs.c9i.8xlarge. Untuk detailnya, lihat Overview of instance families.

Instance types tested

tair.localssd.c1m8.xlarge, tair.localssd.c1m8.2xlarge, tair.localssd.c1m8.with.proxy.xlarge (3 shards), tair.localssd.c1m8.with.proxy.2xlarge (3 shards)

Benchmark ini mencakup dua skenario yang mewakili ujung berlawanan dari spektrum pemanfaatan memori:

  • Memory larger than data volume: Sebagian besar data muat dalam memori dengan rasio memori terhadap data sekitar 7:1, merepresentasikan pola akses yang didominasi memori.

  • Data volume larger than memory: Hanya sebagian data yang di-cache di memori, sehingga sebagian besar permintaan baca/tulis memerlukan I/O disk dengan rasio memori terhadap data sekitar 1:4, merepresentasikan pola akses yang didominasi SSD.

Test tool

Benchmark ini menggunakan YCSB, sebuah framework benchmarking database berbasis Java open-source.

Kode sumber YCSB telah dimodifikasi untuk mendukung parameter recordcount bertipe LONG serta menguji perintah string Redis. Untuk kode sumber yang telah dimodifikasi, lihat YCSB source code.

Test script

Skrip berikut menjalankan pengujian performa untuk skenario data volume larger than memory:

#!/bin/bash

ip=192.168.0.23
port=3100
timeout=30000
command_group=string
recordcount=640000000
run_operationcount=640000000
fieldcount=1
fieldlength=100
threads=64
load_sleep_time=600
run_sleep_time=60

echo "##################################### $command_group  ############################################"

# Load
./bin/ycsb load redis -s -P workloads/workloada \
  -p "redis.host=${ip}" -p "redis.port=${port}" \
  -p "recordcount=${recordcount}" -p "operationcount=${recordcount}" \
  -p "redis.timeout=${timeout}" -p "redis.command_group=${command_group}" \
  -p "fieldcount=${fieldcount}" -p "fieldlength=${fieldlength}" \
  -threads ${threads}
sleep ${load_sleep_time}

# Uniform-Read
./bin/ycsb run redis -s -P workloads/workloadc \
  -p "redis.host=${ip}" -p "redis.port=${port}" \
  -p "recordcount=${recordcount}" -p "operationcount=${run_operationcount}" \
  -p "redis.timeout=${timeout}" -p "redis.command_group=${command_group}" \
  -p "fieldcount=${fieldcount}" -p "fieldlength=${fieldlength}" \
  -p "requestdistribution=uniform" -threads ${threads}
sleep ${run_sleep_time}

# Zipfian-Read
./bin/ycsb run redis -s -P workloads/workloadc \
  -p "redis.host=${ip}" -p "redis.port=${port}" \
  -p "recordcount=${recordcount}" -p "operationcount=${run_operationcount}" \
  -p "redis.timeout=${timeout}" -p "redis.command_group=${command_group}" \
  -p "fieldcount=${fieldcount}" -p "fieldlength=${fieldlength}" \
  -p "requestdistribution=zipfian" -threads ${threads}
sleep ${run_sleep_time}

# Uniform-50%Read-50%Update
./bin/ycsb run redis -s -P workloads/workloada \
  -p "redis.host=${ip}" -p "redis.port=${port}" \
  -p "recordcount=${recordcount}" -p "operationcount=${run_operationcount}" \
  -p "redis.timeout=${timeout}" -p "redis.command_group=${command_group}" \
  -p "fieldcount=${fieldcount}" -p "fieldlength=${fieldlength}" \
  -p "requestdistribution=uniform" -threads ${threads}

Parameters

Parameter

Description

ip

Alamat IP instans Tair

port

Port layanan instans Tair

timeout

Waktu tunggu perintah. Satuan: ms

command_group

Tipe data yang diuji. Diatur ke string

recordcount

Jumlah catatan yang dimuat selama fase pemuatan data

run_operationcount

Jumlah operasi selama fase eksekusi. Pada kedua skenario, atur nilai ini sama dengan recordcount.

fieldcount

Jumlah bidang per catatan. Diatur ke 1

fieldlength

Panjang setiap bidang dalam byte. Diatur ke 100

threads

Jumlah thread klien YCSB. Berbeda-beda tergantung tipe instans.

Test metrics

Metric

Description

QPS

Jumlah operasi baca dan tulis yang diproses per detik

Average latency

Latensi rata-rata operasi baca atau tulis. Satuan: µs

99th percentile latency

Latensi tertinggi untuk 99% operasi tercepat. Satuan: µs. Misalnya, nilai 500 µs berarti 99% operasi selesai dalam waktu 500 µs.

Test results

Memory size larger than data volume

Dengan rasio memori terhadap data sekitar 7:1, sebagian besar permintaan dilayani dari memori.

Instance type

YCSB configuration

Workload

QPS

Average latency (µs)

99th percentile latency (µs)

tair.localssd.c1m8.xlarge

recordcount=20.000.000

run_operationcount=20.000.000

threads=64

fieldlength=100

Load

42.275

1.511

4.987

Uniform-Read

104.303

611

2.163

Zipfian-Read

105.217

605

2.259

Uniform-50%Read-50%Update

52.267

Read: 1.114

Read: 4.191

Update: 1.329

Update: 4.827

tair.localssd.c1m8.2xlarge

recordcount=40.000.000

run_operationcount=40.000.000

threads=128

fieldlength=100

Load

64.104

1.993

5.951

Uniform-Read

174.533

730

2.049

Zipfian-Read

177.612

718

2.033

Uniform-50%Read-50%Update

75.762

Read: 1.509

Read: 4.667

Update: 1.864

Update: 5.479

tair.localssd.c1m8.with.proxy.xlarge (3 shards)

recordcount=60.000.000

run_operationcount=60.000.000

threads=192

fieldlength=100

Load

116.107

1.647

9.983

Uniform-Read

225.613

847

3.687

Zipfian-Read

234.014

816

3.279

Uniform-50%Read-50%Update

138.884

Read: 1.321

Read: 8.131

Update: 1.435

Update: 8.479

tair.localssd.c1m8.with.proxy.2xlarge (3 shards)

recordcount=120.000.000

run_operationcount=120.000.000

threads=384

fieldlength=100

Load

170.447

2.246

11.935

Uniform-Read

323.136

1.184

4.005

Zipfian-Read

330.023

1.159

3.951

Uniform-50%Read-50%Update

207.350

Read: 1.759

Read: 9.031

Update: 1.934

Update: 9.439

Data volume larger than memory size

Dengan rasio memori terhadap data sekitar 1:4, sebagian besar permintaan memerlukan I/O disk, sehingga latensi lebih tinggi dibandingkan skenario dominasi memori di atas.

Instance type

YCSB configuration

Workload

QPS

Average latency (µs)

99th percentile latency (µs)

tair.localssd.c1m8.xlarge

recordcount=640.000.000

run_operationcount=640.000.000

threads=64

fieldlength=100

Load

33.198

1.925

7.699

Uniform-Read

48.243

1.324

3.659

Zipfian-Read

66.635

958

3.003

Uniform-50%Read-50%Update

28.779

Read: 2.169

Read: 7.531

Update: 2.272

Update: 7.851

tair.localssd.c1m8.2xlarge

recordcount=1.280.000.000

run_operationcount=1.280.000.000

threads=128

fieldlength=100

Load

48.605

2.631

8.463

Uniform-Read

83.687

1.527

3.889

Zipfian-Read

113.742

1.123

3.351

Uniform-50%Read-50%Update

46.606

Read: 2.652

Read: 8.815

Update: 2.835

Update: 9.367

tair.localssd.c1m8.with.proxy.xlarge (3 shards)

recordcount=1.920.000.000

run_operationcount=1.920.000.000

threads=192

fieldlength=100

Load

89.421

2.144

15.351

Uniform-Read

115.967

1.653

9.311

Zipfian-Read

155.686

1.231

6.359

Uniform-50%Read-50%Update

72.890

Read: 2.585

Read: 16.479

Update: 2.676

Update: 16.719

tair.localssd.c1m8.with.proxy.2xlarge (3 shards)

recordcount=3.840.000.000

run_operationcount=3.840.000.000

threads=384

fieldlength=100

Load

137.521

2.789

16.591

Uniform-Read

185.273

2.070

8.575

Zipfian-Read

238.099

1.610

6.203

Uniform-50%Read-50%Update

128.080

Read: 2.930

Read: 15.535

Update: 3.060

Update: 15.807

Performance comparison chart

References

ESSD/SSD-based instances