全部产品
Search
文档中心

Tair (Redis® OSS-Compatible):Whitepaper kinerja instans berbasis ESSD

更新时间:Jun 27, 2025

Topik ini menjelaskan lingkungan pengujian, alat uji, metode pengujian, dan hasil pengujian dari uji kinerja pada instans berbasis ESSD Tair (Enterprise Edition).

Lingkungan pengujian

Item

Deskripsi

Wilayah dan zona

Semua pengujian dilakukan di Zona I Hangzhou.

Arsitektur instans

Digunakan arsitektur master-replika standar. Untuk informasi lebih lanjut, lihat Arsitektur standar.

Mesin virtual tempat alat uji stres diterapkan

Digunakan instans Elastic Compute Service (ECS) tipe ecs.g6e.13xlarge. Untuk informasi lebih lanjut, lihat Ikhtisar keluarga instans.

Tipe instans berbasis ESSD

  • tair.essd.standard.xlarge

  • tair.essd.standard.2xlarge

  • tair.essd.standard.4xlarge

  • tair.essd.standard.8xlarge

  • tair.essd.standard.13xlarge

Pengujian kinerja berfokus pada evaluasi kinerja instans berbasis ESSD dalam skenario berikut:

  • Skenario di mana ukuran memori lebih besar daripada volume data: Sebagian besar data dapat diakses dari memori. Dalam skenario ini, rasio ukuran memori terhadap volume data sekitar 7:1.

  • Skenario di mana volume data lebih besar daripada ukuran memori: Hanya sebagian data yang disimpan di memori. Sebagian besar permintaan akses memerlukan operasi baca dan tulis pada disk. Dalam skenario ini, rasio ukuran memori terhadap volume data sekitar 1:4.

Alat uji

Anda dapat menggunakan YCSB open source untuk melakukan uji stres. YCSB adalah alat Java yang digunakan untuk mengukur kinerja berbagai jenis database. Untuk informasi lebih lanjut tentang cara menginstal dan menggunakan YCSB, lihat YCSB.

Dalam pengujian, kode sumber YCSB dimodifikasi untuk memungkinkan Anda menetapkan parameter recordcount ke nilai bertipe LONG dan menguji perintah string terkait Redis. Untuk mendapatkan kode sumber yang telah dimodifikasi, unduh paket kode sumber YCSB.

Beban kerja

  • Pemuatan data: melibatkan operasi SET 100% pada string (operasi tulis).

  • Uniform-Read: menggunakan Workload A yang terdiri dari operasi GET 100% pada string acak (operasi baca). Beban kerja ini bertujuan untuk menguji kinerja baca dalam kondisi sulit.

  • Zipfian-Read: menggunakan Workload C yang mengikuti distribusi Zipfian untuk menguji kinerja baca dalam skenario di mana sebagian besar permintaan baca dikirim untuk mengakses sebagian kecil data. Sebagian besar skenario baca termasuk dalam skenario ini.

  • Uniform-50%Read-50%Update: menggunakan Workload A yang terdiri dari operasi SET 50% pada string (operasi pembaruan) dan operasi GET 50% pada string. Beban kerja ini bertujuan untuk menguji kinerja pembaruan acak.

Untuk informasi lebih lanjut tentang beban kerja, lihat Core Workloads.

Perintah uji

Skrip berikut digunakan untuk menguji kinerja dalam skenario di mana volume data lebih besar daripada ukuran memori:

#! /bin/bash

ip=192.168.0.23
port=3100
timeout=30000
command_group=string
recordcount=640000000
run_operationcount=20000000
fieldcount=1
fieldlength=100
threads=32
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}
Tabel 1. Parameter

Parameter

Deskripsi

ip

Alamat IP dari instans Tair.

port

Port layanan dari instans Tair.

timeout

Periode timeout perintah uji. Satuan: ms.

command_group

Jenis data yang akan diuji. Atur parameter ini ke String.

recordcount

Jumlah data yang dipersiapkan selama fase pemuatan data.

run_operationcount

Jumlah data yang terlibat dalam operasi. Saat menetapkan parameter ini, perhatikan aturan berikut:

  • Dalam skenario di mana ukuran memori lebih besar daripada volume data, atur parameter ini ke nilai parameter recordcount.

  • Dalam skenario di mana volume data lebih besar daripada ukuran memori, atur parameter ini ke nilai parameter recordcount dibagi 32.

fieldcount

Jumlah bidang. Atur parameter ini ke 1.

fieldlength

Panjang setiap bidang. Atur parameter ini ke 100.

threads

Jumlah thread YCSB. Atur parameter ini berdasarkan tipe instans.

Hasil uji

Metrik uji

Deskripsi

QPS

Jumlah operasi baca dan tulis yang diproses per detik.

Latensi Rata-rata

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

Latensi Persentil ke-99

Latensi tertinggi untuk 99% operasi tercepat. Satuan: µs. Contohnya, jika parameter ini diatur ke 500 µs, 99% operasi diproses dalam waktu 500 µs.

Skenario di mana ukuran memori lebih besar daripada volume data

内存大于数据场景的测试结果

Tipe instans

Konfigurasi YCSB

Beban kerja

QPS

Latensi rata-rata (µs)

Latensi persentil ke-99 (µs)

tair.essd.standard.xlarge

recordcount=20000000

run_operationcount=20000000

threads=32

Load

36.740

851

1.595

Uniform-Read

103.890

294

907

Zipfian-Read

106.357

288

865

Uniform-50%Read-50%Update

46.610

Baca: 530

Baca: 1.108

Perbarui: 795

Perbarui: 1.684

tair.essd.standard.2xlarge

recordcount=40000000

run_operationcount=40000000

threads=50

Load

54.670

911

1.528

Uniform-Read

150.796

314

995

Zipfian-Read

151.110

314

977

Uniform-50%Read-50%Update

69.137

Baca: 537

Baca: 948

Perbarui: 878

Perbarui: 1.479

air.essd.standard.4xlarge

recordcount=80000000

run_operationcount=80000000

threads=100

Load

90.703

1.099

1.697

Uniform-Read

285.833

339

1.196

Zipfian-Read

288.750

335

1.162

Uniform-50%Read-50%Update

110.316

Baca: 757

Baca: 1.114

Perbarui: 1.041

Perbarui: 1.536

tair.essd.standard.8xlarge

recordcount=160000000

run_operationcount=160000000

threads=120

Load

117.581

1.011

1.692

Uniform-Read

477.099

242

784

Zipfian-Read

494.550

234

727

Uniform-50%Read-50%Update

196.245

Baca: 519

Baca: 829

Perbarui: 691

Perbarui: 1.096

tair.essd.standard.13xlarge

recordcount=240000000

run_operationcount=240000000

threads=160

Load

126.366

1.249

2.281

Uniform-Read

673.183

231

637

Zipfian-Read

691.383

230

652

Uniform-50%Read-50%Update

197.803

Baca: 678

Baca: 940

Perbarui: 935

Perbarui: 1.925

Skenario di mana volume data lebih besar daripada ukuran memori

数据大于内存场景测试结果

Tipe instans

Konfigurasi YCSB

Beban kerja

QPS

Latensi rata-rata (µs)

Latensi persentil ke-99 (µs)

tair.essd.standard.xlarge

recordcount=640000000

run_operationcount=20000000

threads=32

Load

25.561

1.245

3.497

Uniform-Read

25.727

1.239

2.042

Zipfian-Read

47.559

667

1.217

Uniform-50%Read-50%Update

19.731

Baca: 1.576

Baca: 6.383

Perbarui: 1.639

Perbarui: 6.487

tair.essd.standard.2xlarge

recordcount=1280000000

run_operationcount=40000000

threads=50

Load

42.287

1.179

3.465

Uniform-Read

35.794

1.394

1.880

Zipfian-Read

77.759

637

1.219

Uniform-50%Read-50%Update

28.656

Baca: 1.716

Baca: 8.863

Perbarui: 1.761

Perbarui: 8.951

air.essd.standard.4xlarge

recordcount=2560000000

run_operationcount=80000000

threads=100

Load

65.923

1.514

6.615

Uniform-Read

44.753

2.232

7.903

Zipfian-Read

120.337

826

1.382

Uniform-50%Read-50%Update

38.470

Baca: 2.577

Baca: 8.535

Perbarui: 2.617

Perbarui: 8.583

tair.essd.standard.8xlarge

recordcount=5120000000

run_operationcount=160000000

threads=120

Load

89.231

1.340

9.575

Uniform-Read

51.175

2.343

2.955

Zipfian-Read

131.317

911

1.573

Uniform-50%Read-50%Update

38.930

Baca: 3.063

Baca: 8.695

Perbarui: 3.097

Perbarui: 8.735

tair.essd.standard.13xlarge

recordcount=7680000000

run_operationcount=240000000

threads=160

Load

92.163

1.733

9.879

Uniform-Read

51.267

3.510

16.623

Zipfian-Read

138.522

1.152

2.131

Uniform-50%Read-50%Update

39.584

Baca: 4.022

Baca: 12.159

Perbarui: 4.057

Perbarui: 12.239