Additional JEPS 8182070 requirement: avoiding container OOM

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Additional JEPS 8182070 requirement: avoiding container OOM

Glyn Normington
I would like to mention an additional requirement for JEPS 8182070 (
http://openjdk.java.net/jeps/8182070): avoid the JVM hitting container OOM
by strictly bounding the amount of (physical) memory that the JVM consumes.
This may be implicit in the document, but I think it should be made an
explicit goal.

If a java application hits container OOM, no detailed diagnostics, such as
those associated with an OutOfMemoryError or a JVMTI resource exhaustion
event, are presented to the user, so the user finds it very difficult to
know how to fix the problem.

The Cloud Foundry OSS project has done quite a bit of work on this problem
and provides a couple of utilities which help when running a JVM in a
container:

* Java memory calculator ([1], [2]) to determine JVM memory settings,
* jvmkill JVMTI agent ([3]) to report detailed diagnostics on a resource
exhaustion event.

Regards,
Glyn

[1] https://github.com/cloudfoundry/java-buildpack-memory-calculator

[2] Design doc:
https://docs.google.com/document/d/1vlXBiwRIjwiVcbvUGYMrxx2Aw1RVAtxq3iuZ3UK2vXA/edit#heading=h.uy41ishpv9zc

[3] https://github.com/cloudfoundry/jvmkill