Topik ini menjelaskan lingkungan pengujian, alat uji, metode pengujian, dan hasil pengujian dari uji kinerja pada instance Tair (Enterprise Edition) berbasis SSD.
Lingkungan pengujian
Item | Deskripsi |
Wilayah dan zona | Semua pengujian dilakukan di Hangzhou Zone I. |
Arsitektur instance | Digunakan arsitektur master-replika standar. Untuk informasi lebih lanjut, lihat Arsitektur standar. |
Mesin virtual tempat alat uji stres ditempatkan | Digunakan sebuah instance Elastic Compute Service (ECS) dengan tipe ecs.g6e.13xlarge. Untuk informasi lebih lanjut, lihat Ikhtisar keluarga instance. |
Tipe instance berbasis SSD |
|
Pengujian kinerja berfokus pada evaluasi kinerja instance berbasis SSD 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 dapat digunakan untuk mengukur kinerja berbagai jenis database. Untuk informasi lebih lanjut tentang cara menginstal dan menggunakan YCSB, lihat YCSB.
Dalam pengujian ini, 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.
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 instance Tair. |
port | Port layanan dari instance Tair. |
timeout | Periode timeout perintah uji. Unit: ms. |
command_group | Jenis data yang akan diuji. Tetapkan 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. Tetapkan parameter ini ke 1. |
fieldlength | Panjang setiap bidang. Tetapkan parameter ini ke 100. |
threads | Jumlah thread YCSB. Tetapkan parameter ini berdasarkan tipe instance. |
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. Unit: µs. |
Latensi Persentil ke-99 | Latensi tertinggi untuk 99% operasi tercepat. Unit: µ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 instance | Konfigurasi YCSB | Beban kerja | QPS | Latensi rata-rata (µs) | Latensi persentil ke-99 (µs) |
tair.localssd.c1m4.2xlarge | recordcount=40000000 run_operationcount=40000000 threads=64 | Load | 59830 | 1066 | 2761 |
Uniform-Read | 158221 | 389 | 891 | ||
Zipfian-Read | 164233 | 379 | 873 | ||
Uniform-50%Read-50%Update | 78099 | Read: 651 | Read: 2012 | ||
Update: 974 | Update: 2731 | ||||
tair.localssd.c1m4.4xlarge | recordcount=80000000 run_operationcount=80000000 threads=128 | Load | 91991 | 1388 | 3077 |
Uniform-Read | 302940 | 414 | 921 | ||
Zipfian-Read | 305639 | 410 | 899 | ||
Uniform-50%Read-50%Update | 124929 | Read: 798 | Read: 2231 | ||
Update: 1234 | Update: 3013 | ||||
tair.localssd.c1m4.8xlarge | recordcount=160000000 run_operationcount=160000000 threads=256 | Load | 132865 | 1924 | 3323 |
Uniform-Read | 489287 | 513 | 1313 | ||
Zipfian-Read | 501847 | 499 | 1272 | ||
Uniform-50%Read-50%Update | 187390 | Read: 1069 | Read: 2749 | ||
Update: 1644 | Update: 3613 |
Skenario di mana volume data lebih besar daripada ukuran memori
Tipe instance | Konfigurasi YCSB | Beban kerja | QPS | Latensi rata-rata (µs) | Latensi persentil ke-99 (µs) |
tair.localssd.c1m4.2xlarge | recordcount=1280000000 run_operationcount=1280000000 threads=64 | Load | 50396 | 1258 | 4463 |
Uniform-Read | 74611 | 842 | 1745 | ||
Zipfian-Read | 106366 | 588 | 1406 | ||
Uniform-50%Read-50%Update | 47833 | Read: 1232 | Read: 4049 | ||
Write: 1402 | Write: 4583 | ||||
tair.localssd.c1m4.4xlarge | recordcount=2560000000 run_operationcount=2560000000 threads=128 | Load | 81097 | 1573 | 4119 |
Uniform-Read | 118141 | 1071 | 3085 | ||
Zipfian-Read | 194704 | 634 | 1595 | ||
Uniform-50%Read-50%Update | 75625 | Read: 1562 | Read: 4999 | ||
Update: 1795 | Update: 5419 | ||||
tair.localssd.c1m4.8xlarge | recordcount=5120000000 run_operationcount=5120000000 threads=256 | Load | 115660 | 2210 | 5235 |
Uniform-Read | 202365 | 1252 | 3985 | ||
Zipfian-Read | 309019 | 804 | 2551 | ||
Uniform-50%Read-50%Update | 122318 | Read: 1861 | Read: 5603 | ||
Update: 2307 | Update: 6415 |