Skip to content

Always-Free VM.Standard.A1.Flex silently rounds memory — no warning when provisioned shape differs from request #1107

Description

@surapuramakhil

Description

When launching a VM.Standard.A1.Flex instance with Always-Free quota, the OCI API silently rounds the requested memory to conform to an undocumented 6 GB/OCPU minimum. The CLI returns success with no warning that the provisioned shape differs from the requested shape.

Steps to Reproduce

Observed on us-ashburn-1 (PAYG account, Always-Free A1 allotment):

Requested Provisioned Behaviour
--shape-config '{"ocpus":2,"memory-in-gbs":8}' 2 OCPU / 12 GB Rounded UP 50% (8 → 12)
--shape-config '{"ocpus":2,"memory-in-gbs":16}' 2 OCPU / 12 GB Rounded DOWN 25% (16 → 12)
--shape-config '{"ocpus":1,"memory-in-gbs":6}' 1 OCPU / 6 GB Unchanged
--shape-config '{"ocpus":3,"memory-in-gbs":18}' 3 OCPU / 18 GB Unchanged

Expected Behaviour

When the provisioned shape differs from the requested shape, the CLI (or API response) should include a warning, e.g.:

WARN: requested 8 GB but provisioned 12 GB due to Always-Free A1.Flex minimum of 6 GB/OCPU.

At minimum, the Always Free page and the A1.Flex docs should document the 6 GB/OCPU floor.

Actual Behaviour

  • Silent rounding: no warning, no error, no log line in CLI output.
  • Asymmetric rounding: memory below 6 GB/OCPU rounds UP; memory above the feasible maximum for the OCPU count rounds DOWN. Both directions are silent.
  • Not documented: the 6 GB/OCPU rule does not appear in any official docs page.

Impact

Our first production deploy would have shipped on 12 GB instead of the requested 16 GB, silently shrinking the MySQL buffer pool. We only caught it by manually re-reading the OCI Console after launch, which cost an unnecessary terminate-and-relaunch cycle.

Suggested Fix

  1. Include a warning in the API response (and CLI output) when the provisioned shape-config differs from the requested shape-config.
  2. Document the 6 GB/OCPU minimum in the A1.Flex shape documentation and the Always Free limits page.
  3. Better yet — error out and require an explicit override flag (similar to how AWS handles shape incompatibilities).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions