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

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

最終更新日:Sep 12, 2024

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

テスト環境

項目

説明

リージョンとゾーン

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

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

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

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

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

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

  • tair.essd.standard.xlarge

  • tair.essd.standard.2xlarge

  • tair.essd.standard.4xlarge

  • tair.essd.standard.8xlarge

  • tair.essd.standard.13xlarge

インスタンスタイプの詳細については、「ESSD/SSDベースのインスタンス」をご参照ください。

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

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

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

テストツール

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

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

ワークロード

  • データロード: 文字列に対して100% のSET操作 (書き込み操作) を実行します。

  • Uniform-Read: ランダムな文字列に対する100% のGET操作 (読み取り操作) で構成されるワークロードAを使用します。 このワークロードは、過酷な条件下での読み取りパフォーマンスのテストを目的としています。

  • Zipfian-Read: Zipfianディストリビューションに従うワークロードCを使用して、データのごく一部にアクセスするためにほとんどの読み取り要求が送信されるシナリオで読み取りパフォーマンスをテストします。 ほとんどの読み取りシナリオはこれらのシナリオに属します。

  • Uniform-50% Read-50% Update: 文字列に対する50% のSET操作 (更新操作) と文字列に対する50% のGET操作で構成されるワークロードAを使用します。 このワークロードは、ランダム更新のパフォーマンスをテストすることを目的としています。

ワークロードの詳細については、「コアワークロード」をご参照ください。

テストコマンド

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

#! /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.essd.standard.xlarge

recordcount=20000000

run_operationcount=20000000

スレッド=32

ロード

36,740

851

1,595

ユニフォーム-読み取り

103,890

294

907

Zipfian-読む

106,357

288

865

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

46,610

読む: 530

読む: 1,108

更新: 795

更新: 1,684

tair.essd.standard.2xlarge

recordcount=40000000

run_operationcount=40000000

スレッド=50

ロード

54,670

911

1,528

ユニフォーム-読み取り

150,796

314

995

Zipfian-読む

151,110

314

977

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

69,137

読む: 537

読む: 948

更新: 878

更新: 1,479

air.essd.standard.4xlarge

recordcount=80000000

run_operationcount=80000000

スレッド=100

ロード

90,703

1,099

1,697

ユニフォーム-読み取り

285,833

339

1,196

Zipfian-読む

288,750

335

1,162

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

110,316

読む: 757

読む: 1,114

更新: 1,041

更新: 1,536

tair.essd.standard.8xlarge

recordcount=160000000

run_operationcount=160000000

スレッド=120

ロード

117,581

1,011

1,692

ユニフォーム-読み取り

477,099

242

784

Zipfian-読む

494,550

234

727

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

196,245

読む: 519

読む: 829

更新: 691

更新: 1,096

tair.essd.standard.13xlarge

recordcount=240000000

run_operationcount=240000000

スレッド=160

ロード

126,366

1,249

2,281

ユニフォーム-読み取り

673,183

231

637

Zipfian-読む

691,383

230

652

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

197,803

読む: 678

読む: 940

更新: 935

更新: 1,925

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

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

インスタンスタイプ

YCSB設定

ワークロード

QPS

平均レイテンシ (µ s)

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

tair.essd.standard.xlarge

recordcount=640000000

run_operationcount=20000000

スレッド=32

ロード

25,561

1,245

3,497

ユニフォーム-読み取り

25,727

1,239

2,042

Zipfian-読む

47,559

667

1,217

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

19,731

読む: 1,576

読む: 6,383

更新: 1,639

更新: 6,487

tair.essd.standard.2xlarge

recordcount=1280000000

run_operationcount=40000000

スレッド=50

ロード

42,287

1,179

3,465

ユニフォーム-読み取り

35,794

1,394

1,880

Zipfian-読む

77,759

637

1,219

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

28,656

読む: 1,716

読む: 8,863

更新: 1,761

更新: 8,951

air.essd.standard.4xlarge

recordcount=2560000000

run_operationcount=80000000

スレッド=100

ロード

65,923

1,514

6,615

ユニフォーム-読み取り

44,753

2,232

7,903

Zipfian-読む

120,337

826

1,382

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

38,470

読む: 2,577

読む: 8,535

更新: 2,617

更新: 8,583

tair.essd.standard.8xlarge

recordcount=5120000000

run_operationcount=160000000

スレッド=120

ロード

89,231

1,340

9,575

ユニフォーム-読み取り

51,175

2,343

2,955

Zipfian-読む

131,317

911

1,573

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

38,930

読む: 3,063

読む: 8,695

更新: 3,097

更新: 8,735

tair.essd.standard.13xlarge

recordcount=7680000000

run_operationcount=240000000

スレッド=160

ロード

92,163

1,733

9,879

ユニフォーム-読み取り

51,267

3,510

16,623

Zipfian-読む

138,522

1,152

2,131

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

39,584

読む: 4,022

読む: 12,159

更新: 4,057

更新: 12,239