Skip to content

-Xmint/-Xmaxt and -Xminf/-Xmaxf modification for balanced GC #835

Description

@cedrichansen

Issue or pull request number:
depends on eclipse-openj9/openj9#12043

Overview:
Since the changes for -Xmint/-Xmaxt and -Xminf/-Xmaxf are semantically very similar, I have decided to include all notes/requested changes in this single issue. All of these changes only apply for the Balanced GC policy.

Changes for both sets of options

  • If the -Xmint/-Xmaxt and/or -Xminf/-Xmaxf criteria are not being met and this results in a heap resize, then the heap resize that occurs only happens on non-eden heap (similar to how these options apply to tenure for gencon)
  • Heap (again, non-eden heap here) resizing occurs at the end of a GMP cycle, or global collection (rather than simply global collection as stated in the docs). At this point heap resizing decision is made by observing both -Xmint/-Xmaxt and -Xminf/-Xmaxf compared to the appropriate proportion of time spent in GC, and free heap respectively.
  • If either -Xmint/-Xmaxt and/or -Xminf/-Xmaxf criteria are not being met, there is no guarantee that a heap resize occurs. The heap sizing logic is (in essence) looking at 2 things:
    1. if % of time in GC pauses is between -Xmint/-Xmaxt. If it's too high, expand, if it's too low, contract
    2. if % of free heap is between -Xminf/-Xmaxf. If it's too high(too much free), contract, if too low, expand.
    Since these 2 criteria may be providing completely opposite recommendations (ex, lots of free memory, but high % of time in GC) causing oscillations in heap size, the balanced GC heap sizing logic is finding a balance between these 2 criteria

Changes specific to -Xmint/-Xmaxt

  • -Xmint and -Xmaxt defaults for balanced GC are now 2% and 5% respectively. For this option, the values (-Xmint/-Xmaxt) are compared with % of time that GMP and global GC are active, and DOES NOT include PGC pauses (local GC operations, which are collecting eden regions of the heap).

Changes specific to Xminf/-Xmaxf

  • these values only apply to non-eden portion of the heap (very similar to gencon's tenure). Free memory in eden space is not considered for Xminf/-Xmaxf purposes.

Release target:
Eclipse OpenJ9 0.30.0

Applies to the following JDK versions:
all

Applies to the following platforms:
all

For new command line options:
existing -Xmint/-Xmaxt and -Xminf/-Xmaxf options

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions