
RDSのCPU最適化オプションでライセンス費の最適化を
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
大栗です。
先日Amazon EC2のCPU最適化オプションについてレポートしましたが、皆さんお待ちかねのRDSについてもCPU最適化オプションが登場したのでレポートします。
New features to reduce and optimize vCPUs on Amazon RDS for Oracle Database
CPU最適化オプションとは
先日EC2でもCPU最適化オプションが発表されましたが、一部のCPUを無効にしてインスタンスを起動することで、CPU数でライセンス費用が発生するソフトウェアのコストを最適化するためのオプションです。各インスタンスクラスで、有効にするCPUコア数とHyper−Threadingの有効無効を設定できます。
なお、以下のエントリーでも記載していますが、CPU最適化したインスタンスの費用はフルサイズのインスタンスと同額であるため、ハードウェア費用の削減とはならない点に注意が必要です。また、Amazon EC2ではインスタンスの起動時のみ可能でしたが、RDSではすでに起動しているインスタンスでも変更が可能です。大量のメモリが必要であるがCPUはほとんど使用しない環境で有効になると思われます。
今回RDSでCPU最適化オプションが対応しましたが、以下の条件となります。
- RDS for Oracle
- Bring Your Own License (BYOL)
また、以下のインスタンスクラスでCPU最適化オプションが有効となります(2018年6月9日現在)。これ以外のインスタンスクラスでは動作させるCPUコア数を変更できないのでご注意下さい。設定できるCPUコア数などはドキュメントをご参照下さい。
- m4 - スタンダードインスタン
- db.m4.10xlarge
- db.m4.16xlarge
- r3 - メモリ最適化インスタンス
- db.r3.large
- db.r3.xlarge
- db.r3.2xlarge
- db.r3.4xlarge
- db.r3.8xlarge
- r4 - メモリ最適化インスタンス
- db.r4.large
- db.r4.xlarge
- db.r4.2xlarge
- db.r4.4xlarge
- db.r4.8xlarge
- db.r4.16xlarge
- x1 - メモリ最適化インスタンス
- db.x1.16xlarge
- db.x1.32xlarge
- x1e - メモリ最適化インスタンス
- db.x1e.xlarge
- db.x1e.2xlarge
- db.x1e.4xlarge
- db.x1e.8xlarge
- db.x1e.16xlarge
- db.x1e.32xlarge
2018年1月24日付けのクラウド・コンピューティング環境における Oracle ソフトウェアのライセンスでは以下の記載があるため、ハイパースレッディングの状態によってライセンス数が変わらないことにご注意下さい。
Amazon EC2 and RDS – ハイパースレッディングが有効の場合 2 vCPU = 1 Processor, ハイパースレッディングが無効の場合 1 vCPU = 1 Processor
やってみる
RDS起動時の設定
ここではManagement Consoleでの設定を実施してみます。なお、CLIの場合には--processor-featuresオプションを使用してCPUの設定を変更します。
- DBエンジン: Oracle Standard Edition(oracle-se)
- インスタンスクラス: db.r4.4xlarge
RDSのManagement Consoleからインスタンス-DB インスタンスの起動をクリックします。

DBエンジンはOracleを選択します。ここではエディションをOracler Standard Editionにします。

ユースケースは利用用途によって選択して下さい。ここでは本番稼働用を選択しました。

インスタンスの仕様では以下の内容としています。
| 項目 | 内容 | 備考 |
|---|---|---|
| ライセンスモデル | 自分のライセンスを使用 | BYOLのみCPUの設定変更が可能 |
| DB エンジンのバージョン | Oracle 11.2.0.4v16 | 2018年6月19日時点での最新 |
| DB インスタンスのクラス | db.r4.4xlarge | 16vCPU, 122GiB RAM |
そしてプロセッサの特徴でCPUの設定を行います。デフォルトではコアカウントが8でコアごとのスレッドが2(Hyper-Threadingが有効)であるため、有効なvCPUの合計が16と表示されています。

以下の様にコアカウントが6でコアごとのスレッドが1(Hyper-Threadingが無効)とすると、有効なvCPUの合計が6となります。Oracleの必要なライセンス数も6 Processor分となる想定です。

以下の様にコアカウントが3でコアごとのスレッドが2(Hyper-Threadingが有効)とすると、有効なvCPUの合計が6となります。しかしHyper-Threadingが有効であるためOracleの必要なライセンス数は3 Processor分となる想定です。

それ以降は、今までのRDS for Oracleと同様に設定を行ってRDSを起動します。(しかし余っているライセンスが無いため起動ができずここまで、、、)
起動中のRDSの変更
すでに起動しているRDSの場合は、インスタンスの変更で対応可能です。起動時と同様にインスタンスの仕様-プロセッサの特徴でコアカウントとコアごとのスレッドを設定すれば大丈夫です。ただし、短時間の停止を伴ないことがあるようなので注意して下さい。

さいごに
RDSでもDBライセンス数の最適化が可能になりました。可能であればV$LICENSEを表示して使用しているCPUの状況を確認したかったのですが、手元にログインできる環境がないためここまでとなります。
Oracleのライセンス費が低減されるかはOracle社との契約内容によって左右されることもありますので、実際に必要なライセンス数などはOracle社へ最新の情報を確認することをお勧め致します。






