JEP draft: Dynamic Max Memory Limit [Was. Re: Elastic JVM improvements]
Thomas Schatzl
thomas.schatzl at oracle.com
Wed May 30 19:44:44 UTC 2018
Hi,
fyi, I filed https://bugs.openjdk.java.net/browse/JDK-8204088 and put
the text we have in there.
Thanks,
Thomas
On Wed, 2018-05-30 at 11:43 +0100, Rodrigo Bruno wrote:
> Summary
> -------
>
> // REQUIRED -- Provide a short summary of the proposal, at most one
> or two
> // sentences. This summary will be rolled up into feature lists,
> JSRs, and
> // other documents, so please take the time to make it short and
> sweet.
>
> This JEP allows the JVM to dynamically adjust the maximum available
> memory to
> the application. It provides a dynamic limit for the maximum memory
> limit as opposed to
> the current static limit (-Xmx).
>
> Goals
> -----
>
> // What are the goals of this proposal? Omit this section if you
> have
> // nothing to say beyond what's already in the summary.
>
> Increase and decrease the heap size on demand.
>
> Non-Goals
> ---------
>
> // Describe any goals you wish to identify specifically as being out
> of
> // scope for this proposal.
>
> Success Metrics
> ---------------
>
> // If the success of this work can be gauged by specific numerical
> // metrics and associated goals then describe them here.
>
> Section 5.4 of the paper available at http://www.gsd.inesc-id.pt/~rbr
> uno/publications/rbruno-ismm18.pdf
> shows that having a very high maxium memory limit (-Xmx) leads to a
> very small increase in the
> memory footprint. For example, increasing -Xmx by 32GB increases the
> footprint by 31MB.
>
>
> Motivation
> ----------
>
> // Why should this work be done? What are its benefits? Who's
> asking
> // for it? How does it compare to the competition, if any?
>
> Currently, it is not possible to increase the size of JVM Heap in
> runtime.
> If your production application has an unpredictable traffic spike,
> the only one way to increase the Heap size is to restart the JVM with
> a new Xmx parameter.
>
> Description
> -----------
>
> // REQUIRED -- Describe the enhancement in detail: Both what it is
> and,
> // to the extent understood, how you intend to implement it.
> Summarize,
> // at a high level, all of the interfaces you expect to modify or
> extend,
> // including Java APIs, command-line switches, library/JVM
> interfaces,
> // and file formats. Explain how failures in applications using this
> // enhancement will be diagnosed, both during development and in
> // production. Describe any open design issues.
> //
> // This section will evolve over time as the work progresses,
> ultimately
> // becoming the authoritative high-level description of the end
> result.
> // Include hyperlinks to additional documents as required.
>
> To dynamically limit how large the committed memory (i.e. the heap
> size) can grow, a new dynamically user-defined variable is
> introduced: CurrentMaxHeapSize. This variable (defined in bytes)
> limits how large the heap can be expanded. It can be set at launch
> time and changed at runtime. Regardless of when it is defined, it
> must always have a value equal or below to MaxHeapSize (Xmx - the
> launch time option that limits how large the heap can grow). Unlike
> MaxHeapSize, CurrentMaxHeapSize, can be dynamically changed at
> runtime.
>
> The expected usage is to setup the JVM with a very conservative Xmx
> value (which is shown to have a very small impact on memory
> footprint) and
> then control how large the heap is using the CurrentMaxHeapSize
> dynamic limit.
>
>
> Alternatives
> ------------
>
> // Did you consider any alternative approaches or technologies? If
> so
> // then please describe them here and explain why they were not
> chosen.
>
> Testing
> -------
>
> // What kinds of test development and execution will be required in
> order
> // to validate this enhancement, beyond the usual mandatory unit
> tests?
> // Be sure to list any special platform or hardware requirements.
>
> Risks and Assumptions
> ---------------------
>
> // Describe any risks or assumptions that must be considered along
> with
> // this proposal. Could any plausible events derail this work, or
> even
> // render it unnecessary? If you have mitigation plans for the known
> // risks then please describe them.
>
> Dependencies
> -----------
>
> // Describe all dependencies that this JEP has on other JEPs, JBS
> issues,
> // components, products, or anything else. Dependencies upon JEPs or
> JBS
> // issues should also be recorded as links in the JEP issue itself.
> //
> // Describe any JEPs that depend upon this JEP, and likewise make
> sure
> // they are linked to this issue in JBS.
>
More information about the hotspot-gc-dev
mailing list