Configuring the processor for a DB instance class in RDS for Oracle - Amazon Relational Database Service

Configuring the processor for a DB instance class in RDS for Oracle

Amazon RDS DB instance classes support Intel Hyper-Threading Technology, which enables multiple threads to run concurrently on a single Intel Xeon CPU core. Each thread is represented as a virtual CPU (vCPU) on the DB instance. A DB instance has a default number of CPU cores, which varies according to DB instance class. For example, a db.m4.xlarge DB instance class has two CPU cores and two threads per core by default—four vCPUs in total.

Note

Each vCPU is a hyperthread of an Intel Xeon CPU core.

Overview of processor configuration for RDS for Oracle

When you use RDS for Oracle, you can usually find a DB instance class that has a combination of memory and number of vCPUs to suit your workloads. However, you can also specify the following processor features to optimize your RDS for Oracle DB instance for specific workloads or business needs:

  • Number of CPU cores – You can customize the number of CPU cores for the DB instance. You might do this to potentially optimize the licensing costs of your software with a DB instance that has sufficient amounts of RAM for memory-intensive workloads but fewer CPU cores.

  • Threads per core – You can disable Intel Hyper-Threading Technology by specifying a single thread per CPU core. You might do this for certain workloads, such as high-performance computing (HPC) workloads.

You can control the number of CPU cores and threads for each core separately. You can set one or both in a request. After a setting is associated with a DB instance, the setting persists until you change it.

The processor settings for a DB instance are associated with snapshots of the DB instance. When a snapshot is restored, its restored DB instance uses the processor feature settings used when the snapshot was taken.

If you modify the DB instance class for a DB instance with nondefault processor settings, either specify default processor settings or explicitly specify processor settings at modification. This requirement ensures that you are aware of the third-party licensing costs that might be incurred when you modify the DB instance.

There is no additional or reduced charge for specifying processor features on an RDS for Oracle DB instance. You're charged the same as for DB instances that are launched with default CPU configurations.

DB instance classes that support processor configuration

You can configure the number of CPU cores and threads per core only when the following conditions are met:

  • You're configuring an RDS for Oracle DB instance. For information about the DB instance classes supported by different Oracle Database editions, see RDS for Oracle DB instance classes.

  • Your DB instance is using the Bring Your Own License (BYOL) licensing option of RDS for Oracle. For more information about Oracle licensing options, see RDS for Oracle licensing options.

  • Your DB instance doesn't belong to one of the db.r5 or db.r5b instance classes that have predefined processor configurations. These instance classes have names in the form db.r5.instance_size.tpcthreads_per_core.memratio or db.r5b.instance_size.tpcthreads_per_core.memratio. For example, db.r5b.xlarge.tpc2.mem4x is preconfigured with 2 threads per core (tpc2) and 4x as much memory as the standard db.r5b.xlarge instance class. You can't configure the processor features of these optimized instance classes. For more information, see Supported RDS for Oracle DB instance classes.

In the following table, you can find the DB instance classes that support setting a number of CPU cores and CPU threads per core. You can also find the default value and the valid values for the number of CPU cores and CPU threads per core for each DB instance class.

DB instance class Default vCPUs Default CPU cores Default threads per core Valid number of CPU cores Valid number of threads per core
db.m6i – memory-optimized instance classes

db.m6i.large

2

1

2

1

1, 2

db.m6i.xlarge

4

2

2

2

1, 2

db.m6i.2xlarge

8

4

2

2, 4

1, 2

db.m6i.4xlarge

16

8

2

2, 4, 6, 8

1, 2

db.m6i.4xlarge

16

8

2

2, 4, 6, 8

1, 2

db.m6i.8xlarge

32

16

2

2, 4, 6, 8, 10, 12, 14, 16

1, 2

db.m6i.12xlarge

48

24

2

2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24

1, 2

db.m6i.16xlarge

64

32

2

2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32

1, 2

db.m6i.24xlarge

96

48

2

2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48

1, 2

db.m6i.32xlarge

128

64

2

2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64

1, 2

db.m5 – general-purpose instance classes

db.m5.large

2

1

2

1

1, 2

db.m5.xlarge

4

2

2

2

1, 2

db.m5.2xlarge

8

4

2

2, 4

1, 2

db.m5.4xlarge

16

8

2

2, 4, 6, 8

1, 2

db.m5.8xlarge

32

16

2

2, 4, 6, 8, 10, 12, 14, 16

1, 2

db.m5.12xlarge

48

24

2

2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24

1, 2

db.m5.16xlarge

64

32

2

2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32

1, 2

db.m5.24xlarge

96

48

2

4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48

1, 2

db.m5d – general-purpose instance classes

db.m5d.large

2

1

2

1

1, 2

db.m5d.xlarge

4

2

2

2

1, 2

db.m5d.2xlarge

8

4

2

2, 4

1, 2

db.m5d.4xlarge

16

8

2

2, 4, 6, 8

1, 2

db.m5d.8xlarge

32

16

2

2, 4, 6, 8, 10, 12, 14, 16

1, 2

db.m5d.12xlarge

48

24

2

2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24

1, 2

db.m5d.16xlarge

64

32

2

2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32

1, 2

db.m5d.24xlarge

96

48

2

4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48

1, 2

db.m4 – general-purpose instance classes

db.m4.10xlarge

40

20

2

2, 4, 6, 8, 10, 12, 14, 16, 18, 20

1, 2

db.m4.16xlarge

64

32

2

2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32

1, 2

db.r6i – memory-optimized instance classes

db.r6i.large

2

1

2

1

1, 2

db.r6i.xlarge

4

2

2

1, 2

1, 2

db.r6i.2xlarge

8

4

2

2, 4

1, 2

db.r6i.4xlarge

16

8

2

2, 4, 6, 8

1, 2

db.r6i.8xlarge

32

16

2

2, 4, 6, 8, 10, 12, 14, 16

1, 2

db.r6i.12xlarge

48

24

2

2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24

1, 2

db.r6i.16xlarge

64

32

2

2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32

1, 2

db.r6i.24xlarge

96

48

2

2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48

1, 2

db.r6i.32xlarge

128

64

2

2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64

1, 2

db.r5 – memory-optimized instance classes

db.r5.large

2

1

2

1

1, 2

db.r5.xlarge

4

2

2

2

1, 2

db.r5.2xlarge

8

4

2

2, 4

1, 2

db.r5.4xlarge

16

8

2

2, 4, 6, 8

1, 2

db.r5.8xlarge

32

16

2

2, 4, 6, 8, 10, 12, 14, 16

1, 2

db.r5.12xlarge

48

24

2

2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24

1, 2

db.r5.16xlarge

64

32

2

2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32

1, 2

db.r5.24xlarge

96

48

2

4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48

1, 2

db.r5 – memory-optimized instance classes

db.r5b.large

2

1

2

1

1, 2

db.r5b.xlarge

4

2

2

2

1, 2

db.r5b.2xlarge

8

4

2

2, 4

1, 2

db.r5b.4xlarge

16

8

2

2, 4, 6, 8

1, 2

db.r5b.8xlarge

32

16

2

2, 4, 6, 8, 10, 12, 14, 16

1, 2

db.r5b.12xlarge

48

24

2

2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24

1, 2

db.r5b.16xlarge

64

32

2

2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32

1, 2

db.r5b.24xlarge

96

48

2

4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48

1, 2

db.r5d – memory-optimized instance classes

db.r5d.large

2

1

2

1

1, 2

db.r5d.xlarge

4

2

2

2

1, 2

db.r5d.2xlarge

8

4

2

2, 4

1, 2

db.r5d.4xlarge

16

8

2

2, 4, 6, 8

1, 2

db.r5d.8xlarge

32

16

2

2, 4, 6, 8, 10, 12, 14, 16

1, 2

db.r5d.12xlarge

48

24

2

2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24

1, 2

db.r5d.16xlarge

64

32

2

2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32

1, 2

db.r5d.24xlarge

96

48

2

4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48

1, 2

db.r4 – memory-optimized instance classes

db.r4.large

2

1

2

1

1, 2

db.r4.xlarge

4

2

2

1, 2

1, 2

db.r4.2xlarge

8

4

2

1, 2, 3, 4

1, 2

db.r4.4xlarge

16

8

2

1, 2, 3, 4, 5, 6, 7, 8

1, 2

db.r4.8xlarge

32

16

2

1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16

1, 2

db.r4.16xlarge

64

32

2

2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32

1, 2

db.r3 – memory-optimized instance classes

db.r3.large

2

1

2

1

1, 2

db.r3.xlarge

4

2

2

1, 2

1, 2

db.r3.2xlarge

8

4

2

1, 2, 3, 4

1, 2

db.r3.4xlarge

16

8

2

1, 2, 3, 4, 5, 6, 7, 8

1, 2

db.r3.8xlarge

32

16

2

2, 4, 6, 8, 10, 12, 14, 16

1, 2

db.x2idn – memory-optimized instance classes

db.x2idn.16xlarge

64

32

2

2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32

1, 2

db.x2idn.24xlarge

96

48

2

2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48

1, 2

db.x2idn.32xlarge

128

64

2

2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64

1, 2

db.x2iedn – memory-optimized instance classes

db.x2iedn.xlarge

4

2

2

1, 2

1, 2

db.x2iedn.2xlarge

8

4

2

2, 4

1, 2

db.x2iedn.4xlarge

16

8

2

2, 4, 6, 8

1, 2

db.x2iedn.8xlarge

32

16

2

2, 4, 6, 8, 10, 12, 14, 16

1, 2

db.x2iedn.16xlarge

64

32

2

2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32

1, 2

db.x2iedn.24xlarge

96

48

2

2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48

1, 2

db.x2iedn.32xlarge

128

64

2

2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64

1, 2

db.x2iezn – memory-optimized instance classes

db.x2iezn.2xlarge

8

4

2

2, 4

1, 2

db.x2iezn.4xlarge

16

8

2

2, 4, 6, 8

1, 2

db.x2iezn.6xlarge

24

12

2

2, 4, 6, 8, 10, 12

1, 2

db.x2iezn.8xlarge

32

16

2

2, 4, 6, 8, 10, 12, 14, 16

1, 2

db.x2iezn.12xlarge

48

24

2

2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24

1, 2

db.x1 – memory-optimized instance classes

db.x1.16xlarge

64

32

2

2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32

1, 2

db.x1.32xlarge

128

64

2

4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64

1, 2

db.x1e – memory-optimized instance classes

db.x1e.xlarge

4

2

2

1, 2

1, 2

db.x1e.2xlarge

8

4

2

1, 2, 3, 4

1, 2

db.x1e.4xlarge

16

8

2

1, 2, 3, 4, 5, 6, 7, 8

1, 2

db.x1e.8xlarge

32

16

2

1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16

1, 2

db.x1e.16xlarge

64

32

2

2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32

1, 2

db.x1e.32xlarge

128

64

2

4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64

1, 2

db.z1d – memory-optimized instance classes

db.z1d.large

2

1

2

1

1, 2

db.z1d.xlarge

4

2

2

2

1, 2

db.z1d.2xlarge

8

4

2

2, 4

1, 2

db.z1d.3xlarge

12

6

2

2, 4, 6

1, 2

db.z1d.6xlarge

24

12

2

2, 4, 6, 8, 10, 12

1, 2

db.z1d.12xlarge

48

24

2

4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24

1, 2

Note

You can use AWS CloudTrail to monitor and audit changes to the process configuration of Amazon RDS for Oracle DB instances. For more information about using CloudTrail, see Monitoring Amazon RDS API calls in AWS CloudTrail.

Setting the CPU cores and threads per CPU core for a DB instance class

You can configure the number of CPU cores and threads per core for the DB instance class when you perform the following operations:

Note

When you modify a DB instance to configure the number of CPU cores or threads per core, there is a brief DB instance outage.

You can set the CPU cores and the threads per CPU core for a DB instance class using the AWS Management Console, the AWS CLI, or the RDS API.

When you are creating, modifying, or restoring a DB instance, you set the DB instance class in the AWS Management Console. The Instance specifications section shows options for the processor. The following image shows the processor features options.

Configure processor options

Set the following options to the appropriate values for your DB instance class under Processor features:

  • Core count – Set the number of CPU cores using this option. The value must be equal to or less than the maximum number of CPU cores for the DB instance class.

  • Threads per core – Specify 2 to enable multiple threads per core, or specify 1 to disable multiple threads per core.

When you modify or restore a DB instance, you can also set the CPU cores and the threads per CPU core to the defaults for the instance class.

When you view the details for a DB instance in the console, you can view the processor information for its DB instance class on the Configuration tab. The following image shows a DB instance class with one CPU core and multiple threads per core enabled.

View processor options

For Oracle DB instances, the processor information only appears for Bring Your Own License (BYOL) DB instances.

You can set the processor features for a DB instance when you run one of the following AWS CLI commands:

To configure the processor of a DB instance class for a DB instance by using the AWS CLI, include the --processor-features option in the command. Specify the number of CPU cores with the coreCount feature name, and specify whether multiple threads per core are enabled with the threadsPerCore feature name.

The option has the following syntax.

--processor-features "Name=coreCount,Value=<value>" "Name=threadsPerCore,Value=<value>"

The following are examples that configure the processor:

Setting the number of CPU cores for a DB instance

The following example modifies mydbinstance by setting the number of CPU cores to 4. The changes are applied immediately by using --apply-immediately. If you want to apply the changes during the next scheduled maintenance window, omit the --apply-immediately option.

For Linux, macOS, or Unix:

aws rds modify-db-instance \ --db-instance-identifier mydbinstance \ --processor-features "Name=coreCount,Value=4" \ --apply-immediately

For Windows:

aws rds modify-db-instance ^ --db-instance-identifier mydbinstance ^ --processor-features "Name=coreCount,Value=4" ^ --apply-immediately

Setting the number of CPU cores and disabling multiple threads for a DB instance

The following example modifies mydbinstance by setting the number of CPU cores to 4 and disabling multiple threads per core. The changes are applied immediately by using --apply-immediately. If you want to apply the changes during the next scheduled maintenance window, omit the --apply-immediately option.

For Linux, macOS, or Unix:

aws rds modify-db-instance \ --db-instance-identifier mydbinstance \ --processor-features "Name=coreCount,Value=4" "Name=threadsPerCore,Value=1" \ --apply-immediately

For Windows:

aws rds modify-db-instance ^ --db-instance-identifier mydbinstance ^ --processor-features "Name=coreCount,Value=4" "Name=threadsPerCore,Value=1" ^ --apply-immediately

Viewing the valid processor values for a DB instance class

You can view the valid processor values for a particular DB instance class by running the describe-orderable-db-instance-options command and specifying the instance class for the --db-instance-class option. For example, the output for the following command shows the processor options for the db.r3.large instance class.

aws rds describe-orderable-db-instance-options --engine oracle-ee --db-instance-class db.r3.large

Following is sample output for the command in JSON format.

{ "SupportsIops": true, "MaxIopsPerGib": 50.0, "LicenseModel": "bring-your-own-license", "DBInstanceClass": "db.r3.large", "SupportsIAMDatabaseAuthentication": false, "MinStorageSize": 100, "AvailabilityZones": [ { "Name": "us-west-2a" }, { "Name": "us-west-2b" }, { "Name": "us-west-2c" } ], "EngineVersion": "12.1.0.2.v2", "MaxStorageSize": 32768, "MinIopsPerGib": 1.0, "MaxIopsPerDbInstance": 40000, "ReadReplicaCapable": false, "AvailableProcessorFeatures": [ { "Name": "coreCount", "DefaultValue": "1", "AllowedValues": "1" }, { "Name": "threadsPerCore", "DefaultValue": "2", "AllowedValues": "1,2" } ], "SupportsEnhancedMonitoring": true, "SupportsPerformanceInsights": false, "MinIopsPerDbInstance": 1000, "StorageType": "io1", "Vpc": false, "SupportsStorageEncryption": true, "Engine": "oracle-ee", "MultiAZCapable": true }

In addition, you can run the following commands for DB instance class processor information:

In the output of the preceding commands, the values for the processor features are not null only if the following conditions are met:

  • You are using an RDS for Oracle DB instance.

  • Your RDS for Oracle DB instance supports changing processor values.

  • The current CPU core and thread settings are set to nondefault values.

If the preceding conditions aren't met, you can get the instance type using describe-db-instances. You can get the processor information for this instance type by running the EC2 operation describe-instance-types.

Returning to default processor settings for a DB instance

The following example modifies mydbinstance by returning its DB instance class to the default processor values for it. The changes are applied immediately by using --apply-immediately. If you want to apply the changes during the next scheduled maintenance window, omit the --apply-immediately option.

For Linux, macOS, or Unix:

aws rds modify-db-instance \ --db-instance-identifier mydbinstance \ --use-default-processor-features \ --apply-immediately

For Windows:

aws rds modify-db-instance ^ --db-instance-identifier mydbinstance ^ --use-default-processor-features ^ --apply-immediately

Returning to the default number of CPU cores for a DB instance

The following example modifies mydbinstance by returning its DB instance class to the default number of CPU cores for it. The threads per core setting isn't changed. The changes are applied immediately by using --apply-immediately. If you want to apply the changes during the next scheduled maintenance window, omit the --apply-immediately option.

For Linux, macOS, or Unix:

aws rds modify-db-instance \ --db-instance-identifier mydbinstance \ --processor-features "Name=coreCount,Value=DEFAULT" \ --apply-immediately

For Windows:

aws rds modify-db-instance ^ --db-instance-identifier mydbinstance ^ --processor-features "Name=coreCount,Value=DEFAULT" ^ --apply-immediately

Returning to the default number of threads per core for a DB instance

The following example modifies mydbinstance by returning its DB instance class to the default number of threads per core for it. The number of CPU cores setting isn't changed. The changes are applied immediately by using --apply-immediately. If you want to apply the changes during the next scheduled maintenance window, omit the --apply-immediately option.

For Linux, macOS, or Unix:

aws rds modify-db-instance \ --db-instance-identifier mydbinstance \ --processor-features "Name=threadsPerCore,Value=DEFAULT" \ --apply-immediately

For Windows:

aws rds modify-db-instance ^ --db-instance-identifier mydbinstance ^ --processor-features "Name=threadsPerCore,Value=DEFAULT" ^ --apply-immediately

You can set the processor features for a DB instance when you call one of the following Amazon RDS API operations:

To configure the processor features of a DB instance class for a DB instance by using the Amazon RDS API, include the ProcessFeatures parameter in the call.

The parameter has the following syntax.

ProcessFeatures "Name=coreCount,Value=<value>" "Name=threadsPerCore,Value=<value>"

Specify the number of CPU cores with the coreCount feature name, and specify whether multiple threads per core are enabled with the threadsPerCore feature name.

You can view the valid processor values for a particular DB instance class by running the DescribeOrderableDBInstanceOptions operation and specifying the instance class for the DBInstanceClass parameter. You can also use the following operations:

In the output of the preceding operations, the values for the processor features are not null only if the following conditions are met:

  • You are using an RDS for Oracle DB instance.

  • Your RDS for Oracle DB instance supports changing processor values.

  • The current CPU core and thread settings are set to nondefault values.

If the preceding conditions aren't met, you can get the instance type using DescribeDBInstances. You can get the processor information for this instance type by running the EC2 operation DescribeInstanceTypes.