Dynamic Resource Virtual Machines

Dynamic resource virtual machines (DRVM) offer a lower-cost option for workloads with changing CPU and memory demand.

With DRVM, instances are configured in the same way as Standard Flex VMs. The configured OCPUs and guest-visible memory capacity remain unchanged. The Compute hypervisor dynamically allocates the underlying physical resources based on workload demand.

How DRVM Works

The Compute service uses placement, monitoring, and dynamic resource allocation to manage DRVM instances.

VM Placement

The Compute service observes the CPU and memory demands of instances running on physical hardware. The service uses this information and available capacity when placing DRVM instances across the fleet.

Performance Monitoring and Rebalancing

OCI continuously monitors instance performance and host resource demand and uses fleet rebalancing to help maintain DRVM performance. DRVM instances can experience occasional CPU scheduling waits, which may increase tail latency compared with Static instances.

Important

DRVM is not supported for instances using hardware-assisted (SR-IOV) networking.

Dynamic Resource Allocation

DRVM uses CPU over-subscription and memory overcommit while preserving the VM's configured OCPUs and guest-visible memory capacity. OCI uses the VirtIO memory balloon device intermittently to manage physical memory. OCI continuously monitors host resource demand and rebalances eligible instances to help maintain performance.

Note

OCI platform images include the required VirtIO balloon driver.

Workload Types and VM Options

The following table suggests a VM option based on the workload's operating pattern. Standard Flex VMs can also run the workloads listed under DRVM. Select Standard Flex VMs when sustained resource use or strict performance requirements take precedence over cost optimization.

Workload type and operating pattern
Workload type and operating pattern DRVM Standard
Websites, application servers, APIs, stateless services, and microservices with variable traffic or resource demand ✓
Development, test, and CI/CD workers with intermittent activity between builds or test runs ✓
Batch and ETL processing with lower resource use between jobs ✓
Distributed applications whose instances reach peak demand at different times ✓
Database workloads and other workloads that continuously consume a high proportion of configured CPU or memory ✓
Latency-sensitive or real-time applications requiring consistent response times or strict timing ✓
Applications with tightly synchronized demand across many VMs ✓

Shapes

The following shapes support DRVM.

  • VM.Standard.E6.Flex
Important

For VM.Standard.E6.Flex, DRVM configurations support a maximum memory-to-OCPU ratio of 11:1.

Pricing

Using DRVM provides a 10% discount on the calculated OCPU and memory charges. The Standard list price remains unchanged. The charge is based on configured resources and billable usage time, not the application's measured CPU or memory utilization. For more information, see Cloud Price List.

Cost and usage reports don't identify DRVM usage separately from Standard usage. Both use the same billing description. The DRVM discount is reflected as a reduced billable quantity rather than as a separate discount. This reporting quantity doesn't reduce the configured OCPUs or memory available to the instance.

Creating a DRVM Instance

Create a DRVM instance using the Console, CLI, or API.

  • Go to the Creating an Instance page for detailed instructions on installation steps. Follow these steps to create a DRVM instance.

    1. Open Compute, select Instances, and select Create instance.
    2. As part of step (1) Basic information, select the compartment, availability domain, and an image supported for DRVM.
    3. Under Shape, select VM.Standard.E6.Flex, then configure the shape:
      • For Compute resource management, select DYNAMIC configuration.
      • Configure the OCPUs and memory.
    4. Complete the networking, storage, and access settings, then review the configuration and create the instance.
    5. After provisioning completes, confirm the selected compute resource management configuration and the OCPU and memory values.
    Important

    Changing an Existing Instance

    Eligible Standard Flex VMs can be changed to DRVM, and eligible DRVM instances can be changed back to Static configuration. Eligible instances are converted through live migration without reboot. If an instance cannot be live migrated, conversion requires reboot migration and a brief interruption. Review the availability impact before confirming the change. Conversion of an existing capacity reservation isn't supported.

    For more detailed information on creating or editing a DRVM instance, see:

    Using DRVM with Capacity Reservations

    Capacity reservations can be configured as DRVM. Existing reservation configurations cannot be converted to DRVM. Create a new reservation configured as DRVM, then launch a matching DRVM instance into it. For more information, see:

    Unused capacity in a capacity reservation is billed at 85% of the applicable regular instance price, a 15% discount. The 10% DRVM discount applies only to the calculated OCPU and memory usage charges for DRVM instances running against the reservation. It does not apply to unused reserved capacity or combine with the 15% reservation discount. For more information, see Cloud Price List.

    Using DRVM with Instance Pools

    To configure an instance pool to launch DRVM instances, create an eligible instance configuration and select DYNAMIC configuration under Compute resource management. The Dynamic setting belongs to the instance configuration. Instance pools don't have a separate DRVM setting.

    When you create an instance pool, select the Dynamic instance configuration. To change an existing pool to launch DRVM instances, create a new eligible instance configuration with DYNAMIC selected, then edit the pool to select that configuration. This setting applies only to future launches and replacement instances. It doesn't convert, reboot, or replace existing instances in the pool.

    After the pool launches a new instance, open Attached instances, select the new instance, and verify that the Compute resource management value is Dynamic.

  • Use a configured OCI CLI profile to create an instance. Replace the placeholders with values for your tenancy and an image supported for DRVM. This example configures 1 OCPU and 11 GB of memory without a public IP address. Add the access settings required by your image.

    Example command:

    oci compute instance launch \
      --availability-domain "<availability-domain>" \
      --compartment-id "<compartment-ocid>" \
      --shape VM.Standard.E6.Flex \
      --image-id "<approved-image-ocid>" \
      --subnet-id "<subnet-ocid>" \
      --assign-public-ip false \
      --shape-config '{"ocpus":1,"memoryInGBs":11,"resourceManagement":"DYNAMIC"}'
    
  • To launch a new DRVM instance, set resourceManagement to DYNAMIC in the shapeConfig object of a LaunchInstance request. Allowed values for this property are:

    • DYNAMIC: Corresponds to Dynamic configuration in the Console and enables DRVM.
    • STATIC: Corresponds to Static configuration in the Console. This is the default.

    Example request:

    POST /20160918/instances

    Send the request to the Compute endpoint for your region using an OCI SDK or an appropriately signed API request. Replace the placeholder OCIDs and availability domain with your own values.

    Example payload yourFileName.json:

    {
        "displayName": "Sample Display Name",
        "availabilityDomain":"xxxx:US-ASHBURN-AD-1",
        "faultDomain":"FAULT-DOMAIN-1",
        "compartmentId":"ocid1.compartment.oc1..xxxxx",
        "shape": "VM.Standard.E6.Flex",
        "sourceDetails": {
            "sourceType": "image",
            "imageId": "ocid1.image.oc1.iad.xxxxx"
        },
        "createVnicDetails": {
            "subnetId": "ocid1.subnet.oc1.iad.xxxxx",
            "assignPublicIp": false
        },
        "shapeConfig": {
            "memoryInGBs": 11.0,
            "ocpus": 1.0,
            "resourceManagement": "DYNAMIC"
        }
    }