

# RDS for SQL Server ライセンス込みインスタンスの CPU を最適化する
<a name="SQLServer.Concepts.General.OptimizeCPU"></a>

RDS for SQL Server では、プロセッサ機能を指定して CPU を最適化し、同じメモリと IOPS を維持しながら DB インスタンスの vCPU 数を設定できます。特定のデータベースワークロード要件に必要なメモリ対 CPU 比を実現し、vCPU 数に基づく Microsoft Windows OS と SQL Server のライセンスコストを削減できます。

プロセッサ機能を指定するには、次のパラメータを使用します。

```
--processor-features "Name=coreCount,Value=value" \ 
	"Name=threadsPerCore,Value=value"
```
+ **coreCount** – DB インスタンスのライセンスコストを最適化するために、DB インスタンスの CPU コア数を指定します。選択したインスタンスタイプのコア数の許容値を確認するには、「[CPU の最適化をサポートする DB インスタンスクラスDB インスタンスクラスのサポート](SQLServer.Concepts.General.OptimizeCPU.Support.md)」を参照してください。
+ **threadsPerCore** – CPU コアあたりのスレッド数を定義するには、コアあたりのスレッドを指定します。選択したインスタンスタイプのコアあたりのスレッドの許容値を確認するには、「[CPU の最適化をサポートする DB インスタンスクラスDB インスタンスクラスのサポート](SQLServer.Concepts.General.OptimizeCPU.Support.md)」を参照してください。

CPU 設定を最適化して RDS for SQL Server インスタンスを作成するためのサンプルコマンド:

```
aws rds create-db-instance \
    --engine sqlserver-ee \
    --engine-version 16.00 \
    --license-model license-included \
    --allocated-storage 300 \
    --master-username myuser \
    --master-user-password xxxxx \
    --no-multi-az \
    --vpc-security-group-ids myvpcsecuritygroup \
    --db-subnet-group-name mydbsubnetgroup \
    --db-instance-identifier my-rds-instance \
    --db-instance-class db.m7i.8xlarge \
    --processor-features "Name=coreCount,Value=8" "Name=threadsPerCore,Value=1"
```

この例では、デフォルトで coreCount が 16 の `db.m7i.8xlarge` インスタンスを作成します。CPU の最適化を使用すると、coreCount が 8 になり、有効な vCPU 数が 8 になります。

`--processor-features` パラメータなしでインスタンスを作成する場合、コア数は 16 に設定され、コアあたりのスレッド数はデフォルトで 1 に設定されるため、デフォルトの vCPU 数は 16 になります。

プロセッサ機能を指定する際に留意すべき考慮事項は次のとおりです。
+ **作成** – 許可された値から `processor-features` パラメータに `coreCount` と `threadsPerCore` の両方を指定します。「[CPU の最適化をサポートする DB インスタンスクラスDB インスタンスクラスのサポート](SQLServer.Concepts.General.OptimizeCPU.Support.md)」を参照してください。
+ **変更** – CPU 設定の最適化で設定されたインスタンスクラスから CPU 設定の最適化をサポートするインスタンスクラスに変更する場合は、`--use-default-processor-features` パラメータを使用してデフォルトのプロセッサ設定を指定するか、変更リクエスト中にオプションを明示的に定義する必要があります。
**注記**  
vCPU 数を変更すると、DB インスタンスに関連するライセンス料金に影響する可能性があります。
+ **スナップショットの復元** – スナップショットをソースと同じインスタンスタイプに復元する場合、復元された DB インスタンスはスナップショットから CPU 設定の最適化を継承します。別のインスタンスタイプに復元する場合は、ターゲットインスタンスの CPU 設定の最適化を定義するか、`--use-default-processor-features` パラメータを指定する必要があります。
+ **ポイントインタイムリストア** – ポイントインタイムリストア (PITR) では、PITR の指定された時間に基づいて特定のスナップショットを復元し、その後、すべてのトランザクションログバックアップをそのスナップショットに適用して、インスタンスを指定されたポイントインタイムに移行します。PITR の場合、CPU 設定の最適化、`coreCount` および `threadsPerCore` は、PITR リクエスト中にカスタム値が指定されている場合を除き、ソーススナップショット (ポイントインタイムではない) から取得されます。使用されているソーススナップショットが CPU 設定の最適化で有効になっており、PITR に別のインスタンスタイプを使用している場合は、ターゲットインスタンスの CPU 設定の最適化を定義するか、`—-use-default-processor-features` パラメータを指定する必要があります。

## 制限
<a name="SQLServer.Concepts.General.OptimizeCPU.Limitations"></a>

CPU の最適化を使用する際は、次の制限が適用されます。
+ CPU の最適化は、Enterprise、Standard、および Web Edition でのみサポートされています。
+ CPU の最適化は、一部のインスタンスで使用できます。「[CPU の最適化をサポートする DB インスタンスクラスDB インスタンスクラスのサポート](SQLServer.Concepts.General.OptimizeCPU.Support.md)」を参照してください。
+ CPU コアの数のカスタマイズは、`2xlarge` 以上のインスタンスサイズでサポートされています。これらのインスタンスタイプでは、CPU の最適化でサポートされる vCPCU の最小数は 4 です。
+ CPU の最適化では、CPU の最適化をサポートする第 7 世代以降のインスタンスでハイパースレッディングが無効になるため、コアあたり 1 つのスレッドしか許可されません。