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 |
|
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}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:
|
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 |