Call for discussion: Extend JMap to support parallel and incremental heap scanning.

Martijn Verburg martijnverburg at gmail.com
Tue Nov 27 15:17:31 UTC 2018


Hi Lin and welcome to OpenJDK!

There's an ongoing thread discussing project Atlantis (
http://mail.openjdk.java.net/pipermail/discuss/2018-November/004904.html)
which I think will be looking at potential enhancements like this alongside
the serviceability group.

In the meantime, I think the serviceability-dev mailing list is the right
place to start your discussion.

Cheers,
Martijn


On Tue, 27 Nov 2018 at 15:08, 臧琳 <zanglin5 at jd.com> wrote:

>  Hello,
>
>     This is Zang Lin,  JVM developer in JD.COM. My department just signed
> OCA and we will try to contribute to OpenJDK.   As I am newbie at openJDK,
> I'd like to discuss some of my ideas and ask for suggestions.
>
>
>     Recently I tried to use "jmap -histo" to collect histogram info on a
> large heap at ~200G bytes.  it took about 160 seconds, which actually cause
> our online system suffering "non-responsive" issue.  In addition, if we
> stop jmap with "kill", jmap exits directly (even the attached JVM still
> working on heap iteration), leave no help info for analysis.
>
>
>
> To address the issue above, I proposed following approaches:
>
> 1) Extend Jmap to be parallel and incremental, which means Jmap iterates
> heap in parallel and save the intermediate results incrementally during
> heap scanning (controlled by threshold to decide when to dump).
>
> 2) Make Jmap to accept arguments that enable/disable parallel and partial
> heap iterating, also make parallel thread number configurable.
>
> 3) Make Jmap to dump results to specified file path given by argument,
> rather than output to stdout directly.
>
>
>
>     A prototype has been made internally with G1 upon JDK 11, and our
> preliminary measurement show that parallel iterate ~200GB heap with 4
> threads can save ~30-40 seconds, and I am also analyzing the approach to
> make the time more scaled with parallel threads.  Moreover, with the
> implementation of incremental dump, we can get usefully partial dump info
> for analyzing, even when jmap hang for a long time, or get killed for some
> reason.
>
>
>
>     Several problems were encountered during development. One problem is
> that it is not easy to dynamically allocate some data structures for thread
> local operations, such as KlassInfoTable,which is designed to be StackObj
> that not allowed to be allocated using "new", another problem is that some
> base classes definition in hotspot has to be modified to support parallel
> operations, such as ObjectClosure etc. I am not sure whether these
> modifications can be acceptable.
>
>
>
>     Any suggestions/guidance would be much appreciated!
>
>
>
> BRs,
>
> Lin
>
>
>
>


More information about the discuss mailing list