すべてのプロダクト
Search
ドキュメントセンター

Tair (Redis® OSS-Compatible):SSDベースインスタンスのパフォーマンスホワイトペーパー

最終更新日:Dec 09, 2024

このトピックでは、Tair (Enterprise Edition) SSDベースのインスタンスでのパフォーマンステストのテスト環境、テストツール、テスト方法、およびテスト結果について説明します。

テスト環境

項目

説明

リージョンとゾーン

すべてのテストは杭州ゾーンIで実行されます。

インスタンスアーキテクチャ

標準のマスター-レプリカアーキテクチャが使用されます。 詳細については、「標準アーキテクチャ」をご参照ください。

ストレステストツールがデプロイされている仮想マシン

ECS. g6e.13xlargeインスタンスタイプのElastic Compute Service (ecs) インスタンスが使用されます。 詳細については、「インスタンスファミリーの概要」をご参照ください。

SSDベースのインスタンスタイプ

  • tair.localssd.c1m4.2xlarge

  • tair.localssd.c1m4.4xlarge

  • tair.localssd.c1m4.8xlarge

パフォーマンステストは、次のシナリオでSSDベースのインスタンスのパフォーマンスを評価することに焦点を当てています。

  • メモリサイズがデータ量よりも大きいシナリオ: ほとんどのデータはメモリからアクセスできます。 これらのシナリオでは、メモリサイズとデータ量の比率は約7:1です。

  • データ量がメモリサイズよりも大きいシナリオ: データの一部のみがメモリにキャッシュされます。 ほとんどのアクセス要求は、ディスクに対する読み取りおよび書き込み操作を必要とする。 これらのシナリオでは、メモリサイズとデータ量の比率は約1:4です。

テストツール

オープンソースYCSBを使用してストレステストを実行できます。 YCSBは、複数の種類のデータベースのパフォーマンスをベンチマークするために使用できるJavaツールです。 YCSBのインストール方法と使用方法の詳細については、「YCSB」をご参照ください。

テストでは、YCSBソースコードが変更され、recordcountパラメーターをLONG型の値に設定し、Redisの文字列関連コマンドをテストできるようになります。 変更したソースコードを取得するには、YCSBソースコードパッケージをダウンロードします。

テストコマンド

次のスクリプトは、データ量がメモリサイズよりも大きいシナリオでのパフォーマンスをテストするために使用されます。

#! /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}

表 1. Parameters

パラメーター

説明

ip

TairインスタンスのIPアドレス。

port

Tairインスタンスのサービスポート。

timeout

testコマンドのタイムアウト時間。 単位:ms。

command_group

テストするデータのタイプ。 このパラメーターをStringに設定します。

recordcount

データロードフェーズ中に準備されたデータの量。

run_operationcount

操作に含まれるデータの量。 このパラメーターを設定するときは、次のルールに注意してください。

  • メモリサイズがデータ量よりも大きいシナリオでは、このパラメーターをrecordcountパラメーターの値に設定します。

  • データ量がメモリサイズよりも大きいシナリオでは、このパラメーターをrecordcountパラメーターの値を32で割った値に設定します。

フィールドカウント

フィールドの数。 このパラメーターを1に設定します。

フィールド长さ

各フィールドの長さ。 このパラメーターを100に設定します。

スレッド

YCSBスレッドの数。 インスタンスタイプに基づいてこのパラメーターを設定します。

テスト結果

テストメトリック

説明

QPS

1秒あたりに処理される読み取りおよび書き込み操作の数。

平均レイテンシ

読み取りまたは書き込み操作の平均レイテンシ。 単位: µ s。

99パーセンタイル遅延

操作の最速99% のための最も高いレイテンシ。 単位: µ s。 たとえば、このパラメーターが500 µ sに設定されている場合、99% の操作は500 µ s以内に処理されます。

メモリサイズがデータボリュームよりも大きいシナリオ

インスタンスタイプ

YCSB設定

ワークロード

QPS

平均レイテンシ (µ s)

99パーセンタイル遅延 (µ s)

tair.localssd.c1m4.2xlarge

recordcount=40000000

run_operationcount=40000000

スレッド=64

ロード

59830

1066

2761

ユニフォーム-読み取り

158221

389

891

Zipfian-読む

164233

379

873

Uniform-50% Read-50% アップデート

78099

読む: 651

読む: 2012

更新: 974

更新: 2731

tair.localssd.c1m4.4xlarge

recordcount=80000000

run_operationcount=80000000

スレッド=128

ロード

91991

1388

3077

ユニフォーム-読み取り

302940

414

921

Zipfian-読む

305639

410

899

Uniform-50% Read-50% アップデート

124929

読む: 798

読む: 2231

更新: 1234

更新: 3013

tair.localssd.c1m4.8xlarge

recordcount=160000000

run_operationcount=160000000

スレッド=256

ロード

132865

1924

3323

ユニフォーム-読み取り

489287

513

1313

Zipfian-読む

501847

499

1272

Uniform-50% Read-50% アップデート

187390

読む: 1069

読む: 2749

更新: 1644

更新: 3613

データ量がメモリサイズよりも大きいシナリオ

インスタンスタイプ

YCSB設定

ワークロード

QPS

平均レイテンシ (µ s)

99パーセンタイル遅延 (µ s)

tair.localssd.c1m4.2xlarge

recordcount=1280000000

run_operationcount=1280000000

スレッド=64

ロード

50396

1258

4463

ユニフォーム-読み取り

74611

842

1745

Zipfian-読む

106366

588

1406

Uniform-50% Read-50% アップデート

47833

読む: 1232

読む: 4049

書き込み: 1402

書き込み: 4583

tair.localssd.c1m4.4xlarge

recordcount=2560000000

run_operationcount=2560000000

スレッド=128

ロード

81097

1573

4119

ユニフォーム-読み取り

118141

1071

3085

Zipfian-読む

194704

634

1595

Uniform-50% Read-50% アップデート

75625

読む: 1562

読む: 4999

更新: 1795

更新: 5419

tair.localssd.c1m4.8xlarge

recordcount=5120000000

run_operationcount=5120000000

スレッド=256

ロード

115660

2210

5235

ユニフォーム-読み取り

202365

1252

3985

Zipfian-読む

309019

804

2551

Uniform-50% Read-50% アップデート

122318

読む: 1861

読む: 5603

更新: 2307

更新: 6415

関連ドキュメント

ESSD/SSDベースのインスタンス