はじめに
今回はOracle Autonomous Transaction Processing(ATP)のOCPU数(1,2,4,8)によるスループット(TPS)を確認してみました。
ベンチマークツールはJdbcRunnerを使用させて頂きました。
なお、実行する環境によって結果は異なるかと思いますので、ご了承ください。
ベンチマーククライアント
Shape | CPU | Memory |
---|---|---|
VM.Standard2.8 | 8OCPU(16vCPU) | 120 GB |
ベンチマークツール設定
- JdbcRunner(Version1.3)を使用
- 100 warehouse
- 100 nAgents
- ウォームアップ: 5 分
- 計測時間: 30 分
- テストキットは Tiny TPC-C とする
- 5種類のトランザクションを実施(各トランザクションの実行比率は10:10:1:1:1)
- グラフはNew-Order の値で作成する
構成
同一クライアント条件下での実行
1OCPU
Throughputの一番左の値が、New-Orderなので138.7 になります。
1 2 3 4 5 6 7 8 9 |
23:35:55 [INFO ] [Total tx count] 249601,249616,24961,24975,24963 tx 23:35:55 [INFO ] [Throughput] 138.7,138.7,13.9,13.9,13.9 tps 23:35:55 [INFO ] [Response time (minimum)] 6,6,2,48,2 msec 23:35:55 [INFO ] [Response time (50%tile)] 258,50,30,989,15 msec 23:35:55 [INFO ] [Response time (90%tile)] 1009,723,70,1146,39 msec 23:35:55 [INFO ] [Response time (95%tile)] 1057,792,727,1230,53 msec 23:35:55 [INFO ] [Response time (99%tile)] 1175,950,786,1445,757 msec 23:35:55 [INFO ] [Response time (maximum)] 10133,9915,971,9130,951 msec 23:35:55 [INFO ] < JdbcRunner SUCCESS |
CPU使用率が100%で頭打ちになっています。
2OCPU
2OCPUでは284.6と約2倍のスコアになっています。
1 2 3 4 5 6 7 8 9 |
00:36:57 [INFO ] [Total tx count] 512262,512246,51232,51229,51229 tx 00:36:57 [INFO ] [Throughput] 284.6,284.6,28.5,28.5,28.5 tps 00:36:57 [INFO ] [Response time (minimum)] 6,5,2,42,2 msec 00:36:57 [INFO ] [Response time (50%tile)] 120,26,13,183,9 msec 00:36:57 [INFO ] [Response time (90%tile)] 775,66,24,849,20 msec 00:36:57 [INFO ] [Response time (95%tile)] 813,631,29,891,24 msec 00:36:57 [INFO ] [Response time (99%tile)] 884,754,668,994,658 msec 00:36:57 [INFO ] [Response time (maximum)] 10129,10443,874,9335,884 msec 00:36:57 [INFO ] < JdbcRunner SUCCESS |
こちらもCPU100%で頭打ち
4OCPU
4OCPUでは601.2となっています。こちらも2OCPUから約2倍のスコアでした。
1 2 3 4 5 6 7 8 9 |
01:46:19 [INFO ] [Total tx count] 1082085,1082126,108214,108203,108213 tx 01:46:19 [INFO ] [Throughput] 601.2,601.2,60.1,60.1,60.1 tps 01:46:19 [INFO ] [Response time (minimum)] 6,5,2,39,2 msec 01:46:19 [INFO ] [Response time (50%tile)] 67,14,7,101,5 msec 01:46:19 [INFO ] [Response time (90%tile)] 126,27,10,593,6 msec 01:46:19 [INFO ] [Response time (95%tile)] 592,57,11,662,7 msec 01:46:19 [INFO ] [Response time (99%tile)] 689,577,387,740,13 msec 01:46:19 [INFO ] [Response time (maximum)] 9461,9284,696,9342,892 msec 01:46:19 [INFO ] < JdbcRunner SUCCESS |
やはりここでもCPU使用率が100%となっています。
8OCPU
最後に8OCPUです。
スループットは1007.1となっており、ここでは4OCPUの2倍までは届いていませんでした。
1 2 3 4 5 6 7 8 9 |
02:41:42 [INFO ] [Total tx count] 1812724,1812708,181276,181272,181278 tx 02:41:42 [INFO ] [Throughput] 1007.1,1007.1,100.7,100.7,100.7 tps 02:41:42 [INFO ] [Response time (minimum)] 5,5,2,42,2 msec 02:41:42 [INFO ] [Response time (50%tile)] 65,14,7,98,5 msec 02:41:42 [INFO ] [Response time (90%tile)] 91,25,10,119,6 msec 02:41:42 [INFO ] [Response time (95%tile)] 99,43,10,152,6 msec 02:41:42 [INFO ] [Response time (99%tile)] 132,80,14,197,8 msec 02:41:42 [INFO ] [Response time (maximum)] 9030,9296,115,8803,30 msec 02:41:42 [INFO ] < JdbcRunner SUCCESS |
ただCPU使用率に関しては70%程度でしたので、まだ上昇が見込めそうでした。
各ATPのグラフ
8OCPUでのCPU使用率上限確認
上記のテストでは8OCPUの時に、CPU使用率にまだ余裕があったので、クライアント端末を1台増やし、ATPの設定(CPU/IO shares)を8から16に変更して実行してみました。
CPU/IO Sharesはコンシュマーグループのリソース割り当ての割合を変更する値です。
今回は他のコンシュマーグループを使用していないのであまり意味はないのですが、念の為変更していました。
クライアント1
1 2 3 4 5 6 7 8 9 |
04:54:06 [INFO ] [Total tx count] 1026535,1026611,102650,102651,102667 tx 04:54:06 [INFO ] [Throughput] 570.3,570.3,57.0,57.0,57.0 tps 04:54:06 [INFO ] [Response time (minimum)] 5,5,2,42,2 msec 04:54:06 [INFO ] [Response time (50%tile)] 79,20,9,125,6 msec 04:54:06 [INFO ] [Response time (90%tile)] 152,73,13,276,8 msec 04:54:06 [INFO ] [Response time (95%tile)] 264,113,15,397,9 msec 04:54:06 [INFO ] [Response time (99%tile)] 461,350,27,551,15 msec 04:54:06 [INFO ] [Response time (maximum)] 15753,27412,560,9600,489 msec 04:54:06 [INFO ] < JdbcRunner SUCCESS |
クライアント2
1 2 3 4 5 6 7 8 9 |
04:54:25 [INFO ] [Total tx count] 973552,973558,97364,97355,97355 tx 04:54:25 [INFO ] [Throughput] 540.9,540.9,54.1,54.1,54.1 tps 04:54:25 [INFO ] [Response time (minimum)] 5,5,2,40,2 msec 04:54:25 [INFO ] [Response time (50%tile)] 86,20,9,136,6 msec 04:54:25 [INFO ] [Response time (90%tile)] 165,74,14,287,8 msec 04:54:25 [INFO ] [Response time (95%tile)] 285,113,17,405,10 msec 04:54:25 [INFO ] [Response time (99%tile)] 471,353,50,550,22 msec 04:54:25 [INFO ] [Response time (maximum)] 16898,27438,818,9239,488 msec 04:54:25 [INFO ] < JdbcRunner SUCCESS |
CPU使用率が100%張り着くまでは行きませんでしたが、おおよそ上限にきていると思います。
上記でクライアント合計のスループットは1111.2となっていました。
4OCPUに比べて1.8倍程の向上がみられました。