Topik ini menjelaskan pengujian pada Tair (Enterprise Edition) instance memori persisten yang dioptimalkan. Lingkungan pengujian, alat, metode, dan hasil dijelaskan.
Ikhtisar
Tair instance memori persisten yang dioptimalkan menggunakan memori persisten (PMEM) untuk menyediakan database in-memory berkapasitas besar yang kompatibel dengan Redis sumber terbuka. Instance ini tidak menggunakan disk untuk menerapkan persistensi data dan biayanya 30% lebih rendah dibandingkan instance Redis Open-Source Edition, sambil memberikan throughput dan latensi hampir sama dengan instance Redis Open-Source Edition serta mempertahankan persistensi setiap operasi. Hal ini membantu meningkatkan keandalan data bisnis. Untuk informasi lebih lanjut, lihat Instance Memori Persisten yang Dioptimalkan.
Lingkungan pengujian
Item | Deskripsi |
Wilayah dan zona | Semua pengujian dilakukan di Zhangjiakou Zone A. |
Arsitektur instance | Arsitektur master-replika standar digunakan. Untuk informasi lebih lanjut, lihat Arsitektur Standar. |
Mesin virtual tempat alat uji stres diterapkan | Sebuah instance Elastic Compute Service (ECS) tipe ecs.g6e.8xlarge digunakan. Untuk informasi lebih lanjut, lihat Ikhtisar keluarga instance. |
Tipe instance | Dalam pengujian, tipe instance adalah tair.scm.standard.32m.128d. |
Alat pengujian
Anda dapat menggunakan YCSB sumber terbuka 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.
YCSB sumber terbuka hanya menguji hash. Untuk menggunakan YCSB menguji string, Anda harus menggunakan file RedisClient.java untuk mengganti file asli dengan nama yang sama di direktori YCSB/redis/src/main/java/site/ycsb/db setelah mengunduh YCSB.
Beban kerja
Jumlah total data yang terlibat dalam pengujian adalah 8 GB. Metode distribusi data adalah Zipfian. Kinerja instance memori persisten yang dioptimalkan diuji dalam skenario berikut:
Pemuatan data: 100% operasi tulis.
Beban Kerja C: 100% operasi baca.
Beban Kerja A: 50% operasi pembaruan dan 50% operasi baca.
Untuk informasi lebih lanjut tentang beban kerja, lihat Beban Kerja Inti.
Perintah kompleks untuk set dan zset tidak cocok untuk pengujian ini karena skenario aplikasinya. Anda dapat menyesuaikan pengujian untuk set dan zset berdasarkan skenario bisnis Anda.
Perintah pengujian
# Muat data.
workload=a
./bin/ycsb load redis -s -P workloads/workload${workload} -p "redis.host=${server_ip}" -p "redis.port=${port}" -p "redis.password=${password}" -p "recordcount=${recordcount}" -p "operationcount=${operationcount}" -p "redis.timeout=30000" -p "redis.command_group=${command_group}" -p "fieldcount=${fieldcount}" -p "fieldlength=${fieldlength}" -threads ${threads} -p "redis.password=***:*****"
# Jalankan Beban Kerja C.
workload=c
./bin/ycsb run redis -s -P workloads/workload${workload} -p "redis.host=${server_ip}" -p "redis.port=${port}" -p "redis.password=${password}" -p "recordcount=${recordcount}" -p "operationcount=${operationcount}" -p "redis.timeout=30000" -p "redis.command_group=${command_group}" -p "fieldcount=${fieldcount}" -p "fieldlength=${fieldlength}" -threads ${threads} -p "redis.password=***:*****"
# Jalankan Beban Kerja A.
workload=a
./bin/ycsb run redis -s -P workloads/workload${workload} -p "redis.host=${server_ip}" -p "redis.port=${port}" -p "redis.password=${password}" -p "recordcount=${recordcount}" -p "operationcount=${operationcount}" -p "redis.timeout=30000" -p "redis.command_group=${command_group}" -p "fieldcount=${fieldcount}" -p "fieldlength=${fieldlength}" -threads ${threads} -p "redis.password=***:*****" Tabel 1. Parameter
Parameter | Deskripsi |
server_ip | Alamat IP instance. |
port | Port layanan instance. |
password | Format kata sandi bervariasi berdasarkan akun yang dipilih:
Catatan Jika Anda lupa kata sandi Anda, Anda dapat menyetel ulang. Untuk informasi lebih lanjut, lihat Ubah atau setel ulang kata sandi. |
recordcount | Jumlah data yang disiapkan. |
operationcount | Jumlah data yang terlibat dalam operasi. |
command_group | Jenis data yang ingin Anda uji. Dalam pengujian ini, jenis data berikut diuji secara berurutan:
|
fieldcount | Jumlah bidang atau elemen. Untuk menguji string, atur parameter ini ke 1. Untuk menguji jenis data lainnya, atur parameter ini ke 10. |
fieldlength | Panjang nilai. Atur parameter ini berdasarkan persyaratan pengujian. |
threads | Jumlah thread YCSB. Atur parameter ini berdasarkan tipe instance. |
Hasil pengujian
Metrik pengujian | Deskripsi |
QPS | Jumlah operasi baca dan tulis yang diproses per detik. |
Masukkan Latensi Rata-rata | Latensi rata-rata operasi tulis. Unit: µs. |
Latensi Persentil ke-99 INSERT | Latensi tertinggi untuk 99% tercepat dari operasi tulis. Unit: µs. Sebagai contoh, jika parameter ini diatur ke 500 µs, 99% operasi diproses dalam 500 µs. |
Rata-rata Latensi READ | Latensi rata-rata operasi baca. Unit: µs. |
Latensi Persentil ke-99 READ | Latensi tertinggi untuk 99% tercepat dari operasi baca. Unit: µs. |
Rata-rata Latensi UPDATE | Latensi rata-rata operasi pembaruan. Unit: µs. |
Latensi Persentil ke-99 UPDATE | Latensi tertinggi untuk 99% tercepat dari operasi pembaruan. Unit: µs. |
Hasil pengujian untuk pemuatan data
Tabel 2. String
Panjang nilai (byte) | QPS | Rata-rata latensi INSERT (µs) | Latensi persentil ke-99 INSERT (µs) |
128 | 134.478 | 473 | 687 |
256 | 126.139 | 504 | 828 |
1.024 | 99.775 | 638 | 1.051 |
2.048 | 77.130 | 826 | 1.157 |
4.096 | 60.646 | 1.050 | 1.534 |
Tabel 3. Hash
Jumlah bidang dalam sebuah key | Panjang nilai (byte) | QPS | Rata-rata latensi INSERT (µs) | Latensi persentil ke-99 INSERT (µs) |
10 | 128 | 47.353 | 1.348 | 1.885 |
256 | 46.716 | 1.366 | 2.181 | |
1.024 | 27.759 | 2.297 | 2.873 | |
2.048 | 16.605 | 3.833 | 4.923 |
Tabel 4. List
Jumlah elemen dalam sebuah key | Panjang nilai (byte) | QPS | Rata-rata latensi INSERT (µs) | Latensi persentil ke-99 INSERT (µs) |
10 | 128 | 64.950 | 979 | 1.310 |
256 | 47.157 | 1.348 | 1.752 | |
1.024 | 26.719 | 2.386 | 3.457 | |
2.048 | 16.714 | 3.811 | 4.751 | |
4.096 | 10.129 | 6.279 | 7.891 |
Tabel 5. Set
Jumlah anggota dalam sebuah key | Panjang nilai (byte) | QPS | Rata-rata latensi INSERT (µs) | Latensi persentil ke-99 INSERT (µs) |
10 | 128 | 63.670 | 1.001 | 1.514 |
256 | 44.707 | 1.427 | 2.129 | |
1.024 | 25.375 | 2.513 | 3.239 | |
2.048 | 14.318 | 4.451 | 5.619 | |
4.096 | 8.378 | 7.608 | 9.095 |
Tabel 6. Set Terurut
Jumlah elemen dalam sebuah key | Panjang nilai (byte) | QPS | Rata-rata latensi INSERT (µs) | Latensi persentil ke-99 INSERT (µs) |
10 | 128 | 40.292 | 1.585 | 2.469 |
256 | 34.168 | 1.869 | 2.569 | |
1.024 | 21.347 | 2.989 | 3.905 | |
2.048 | 12.868 | 4.956 | 6.255 | |
4.096 | 7.864 | 8.101 | 9.599 |
Hasil pengujian untuk Beban Kerja C
Tabel 7. String
Panjang nilai (byte) | QPS | Rata-rata latensi READ (µs) | Latensi persentil ke-99 READ (µs) |
128 | 170.699 | 362 | 546 |
256 | 163.829 | 380 | 565 |
1.024 | 161.491 | 386 | 569 |
2.048 | 130.189 | 487 | 729 |
4.096 | 115.433 | 548 | 808 |
Tabel 8. Hash
Jumlah bidang dalam sebuah key | Panjang nilai (byte) | QPS | Rata-rata latensi READ (µs) | Latensi persentil ke-99 READ (µs) |
10 | 128 | 96.111 | 662 | 874 |
256 | 86.892 | 733 | 915 | |
1.024 | 61.608 | 1.030 | 1.293 | |
2.048 | 37.334 | 1.696 | 2.331 | |
4.096 | 25.943 | 2.429 | 3.319 |
Tabel 9. List
Jumlah elemen dalam sebuah key | Panjang nilai (byte) | QPS | Rata-rata latensi READ (µs) | Latensi persentil ke-99 READ (µs) |
10 | 128 | 105.296 | 604 | 889 |
256 | 97.047 | 655 | 890 | |
1.024 | 66.384 | 955 | 1.192 | |
2.048 | 35.796 | 1.769 | 2.461 | |
4.096 | 26.314 | 2.392 | 3.271 |
Tabel 10. Set
Jumlah anggota dalam sebuah key | Panjang nilai (byte) | QPS | Rata-rata latensi READ (µs) | Latensi persentil ke-99 READ (µs) |
10 | 128 | 97.825 | 651 | 896 |
256 | 80.954 | 787 | 970 | |
1024 | 59.924 | 1.060 | 1.313 | |
2048 | 33.356 | 1.900 | 2.637 | |
4096 | 23.605 | 2.677 | 3.723 |
Tabel 11. Set Terurut
Jumlah elemen dalam sebuah key | Panjang nilai (byte) | QPS | Rata-rata latensi READ (µs) | Latensi persentil ke-99 READ (µs) |
10 | 128 | 58.380 | 1.093 | 1.341 |
256 | 56.287 | 1.133 | 1.390 | |
1.024 | 47.468 | 1.338 | 1.688 | |
2.048 | 30.073 | 2.096 | 2.783 | |
4.096 | 21.850 | 2.880 | 3.765 |
Hasil pengujian untuk Beban Kerja A
Tabel 12. String
Panjang nilai (byte) | QPS | Rata-rata latensi READ (µs) | Latensi persentil ke-99 READ (µs) | Rata-rata latensi UPDATE (µs) | Latensi persentil ke-99 UPDATE (µs) |
128 | 141.120 | 451 | 616 | 450 | 618 |
256 | 137.551 | 463 | 617 | 461 | 618 |
1.024 | 124.165 | 516 | 724 | 508 | 725 |
2.048 | 92.652 | 695 | 881 | 678 | 871 |
4.096 | 78.994 | 819 | 1.042 | 791 | 1.024 |
Tabel 13. Hash
Jumlah bidang dalam sebuah key | Panjang nilai (byte) | QPS | Rata-rata latensi READ (µs) | Latensi persentil ke-99 READ (µs) | Rata-rata latensi UPDATE (µs) | Latensi persentil ke-99 UPDATE (µs) |
10 | 128 | 99.495 | 646 | 831 | 633 | 820 |
256 | 88.235 | 731 | 985 | 712 | 966 | |
1.024 | 72.013 | 892 | 1.159 | 863 | 2.049 | |
2.048 | 45.790 | 1.379 | 1.898 | 1.354 | 2.821 | |
4.096 | 32.912 | 1.891 | 2.931 | 1.915 | 7.887 |
Tabel 14. List
Jumlah elemen dalam sebuah key | Panjang nilai (byte) | QPS | Rata-rata latensi READ (µs) | Latensi persentil ke-99 READ (µs) | Rata-rata latensi UPDATE (µs) | Latensi persentil ke-99 UPDATE (µs) |
10 | 128 | 71.696 | 591 | 775 | 1.185 | 1.383 |
256 | 66.294 | 638 | 800 | 1.281 | 1.456 | |
1.024 | 53.402 | 791 | 1.006 | 1.581 | 1.865 | |
2.048 | 36.519 | 1.221 | 1.581 | 2.232 | 2.831 | |
4.096 | 28.390 | 1.618 | 2.113 | 2.803 | 3.777 |
Tabel 15. Set
Jumlah anggota dalam sebuah key | Panjang nilai (byte) | QPS | Rata-rata latensi READ (µs) | Latensi persentil ke-99 READ (µs) | Rata-rata latensi UPDATE (µs) | Latensi persentil ke-99 UPDATE (µs) |
10 | 128 | 66.346 | 640 | 792 | 1.282 | 1.445 |
256 | 60.010 | 707 | 993 | 1.415 | 1.957 | |
1.024 | 45.359 | 933 | 1.128 | 1.858 | 2.073 | |
2.048 | 29.027 | 1.529 | 2.021 | 2.820 | 4.507 | |
4.096 | 21.440 | 2.144 | 2.773 | 3.726 | 5.095 |
Tabel 16. Set Terurut
Jumlah elemen dalam sebuah key | Panjang nilai (byte) | QPS | Rata-rata latensi READ (µs) | Latensi persentil ke-99 READ (µs) | Rata-rata latensi UPDATE (µs) | Latensi persentil ke-99 UPDATE (µs) |
10 | 128 | 49.695 | 861 | 1.050 | 1.707 | 1.912 |
256 | 48.036 | 891 | 1.084 | 1.763 | 1.970 | |
1.024 | 39.795 | 1.081 | 1.386 | 2.107 | 2.563 | |
2.048 | 28.415 | 1.597 | 1.981 | 2.855 | 3.589 | |
4.096 | 21.317 | 2.247 | 2.821 | 3.665 | 4.787 |