Oracle Autonomous Transaction Processing(ATP)で、自動スケールを有効にした場合と無効の場合とで、性能及びCPUリソースの相違を確認してみました。
ATP の自動スケールを有効にすると、ワークロード状況によって設定されているOCPU数の最大3倍およびIOリソースについてもスケーリングさせる事ができます。
検証した環境は以下のようになっています。
▼ATPインスタンス
項目 | 項目値 |
---|---|
OCPU | 1 |
ストレージ(TB) | 1 |
デプロイメント・タイプ | サーバーレス |
▼ベンチマーククライアント(COMPUTEインスタンス)×3
項目 | 項目値 |
---|---|
SHAPE | VM.Standard2.2 |
OCPU | 2 |
MEMORY | 30GB |
ベンチマークについて
今回、ベンチマーククライアントを3台用いて マルチコアによるATPのパフォーマンス比較 同様にJdbcRunnerを使用します。
ベンチマーククライアントは1台ずつ時間をずらして、接続数を増やしていきます。
- ベンチマーククライアント1
接続数 5 で 5 時間 のベンチマークを実行。(ウォームアップ時間 5 分)
- ベンチマーククライアント2
ベンチマーククライアント1の測定開始から 1 時間後に接続数 10 で 4 時間 のベンチマークを実行。(ウォームアップ時間なし)
- ベンチマーククライアント3
ベンチマーククライアント1の測定開始から 3 時間後に接続数 20 で 2 時間 のベンチマークを実行。(ウォームアップ時間なし)
※テストキットは Tiny TPC-C を使用し、100 warehouse(約 10GB)のデータ容量とします。
検証結果
▼CPUリソース確認
まずは自動スケールを有効にした場合の測定時のCPU使用率を確認してみたいと思います。
ベンチマーククライアント2を実行した時点(接続数 5 → 15)からCPU使用率が 10% 前後で変動していたのが、40% 前後で推移するようになりました。
また、ベンチマーククライアント3を実行した時点(接続数 15 → 35)からCPU使用率が 100% 付近まで上昇し、その後、80% から 100% の間で推移するようになりました。
対して自動スケールを無効にした場合は、ベンチマーククライアント2を実行した時点(接続数 5 → 15)から測定終了時点まで、CPU使用率はほぼ 100% でした。
上記の内容からも自動スケールが有効に働いている事が確認できますが、サービスコンソール画面の「Number of OCPUs allocated」のグラフからも、自動スケールを有効にした際にOCPUが順にスケールした事が確認できます。
このグラフは1時間ごとに、その1時間で稼働したOCPUの平均値が表示されます。
2:00 に検証を開始し、3:00 までの接続数 5 の時点では、OCPU数は 1 となっています。
接続数 15 となった 3:00 から 5:00 までのOCPU数の平均を表す 4:00, 5:00 では OCPU数は 2 となっています。
接続数 35 となった 5:00 から 7:00 までのOCPU数の平均を表す 6:00, 7:00 では OCPU数は 3 となっています。
▼スループット確認
JdbcRunner では1秒ごとにスループット(TPS)の情報が出力されます。
5種類のトランザクションのうち、New-Order の 各ベンチマークの同じ時間帯の出力結果を合算した TPS は以下のようになりました。
※いづれのトランザクションも同じような傾向となりました。
左側が自動スケールを有効にした場合で、右側が無効の場合となります。
無効の場合は、有効にした場合と比較して、接続数 15 とした時点から TPS が伸びない結果となっています。
(有効にした場合と無効にした場合は、別日の別時間帯の検証となります。)
今回の検証結果からもATPのメリットの一つである自動スケールが、非常に有用に働いている事が確認できました。
ATPを使用する方は是非、自動スケールを活用して、快適なパフォーマンスを堪能してみてください。