Skip to content

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

@cedrichansen

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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions