RFR 8204552: NMT: Separate thread stack tracking from virtual memory tracking
Zhengyu Gu
zgu at redhat.com
Thu Mar 7 18:21:51 UTC 2019
Hi Thomas,
Thanks for the review.
On 3/7/19 11:10 AM, Thomas Stüfe wrote:
> Hi Zhengyu,
>
> thanks for the changes. I compiled and tested on AIX.
>
> See here AIX output for a small test creating 100 child processes and
> waiting on them, which creates 100 reaper threads with small thread
> stacks (128K by default but AIX has a high lower cap, reaper threads
> have ~450K stack bc of 64K pages). Baseline is about 50M stack.
>
> (Note that this is not committed thru but NMT does not show this with
> this mode).
>
> https://gist.github.com/tstuefe/734c8c0bb8987f5ff8fd1ca2155bfc17
>
> I think this checks out.
This is consistent with the platforms that do not support scanning,
which, unfortunately, are the majority.
Are you planning to add scanning for AIX?
>
> ---
>
> Here, I have a test output of our own propietary malloc statistics:
>
> https://gist.github.com/tstuefe/860b5a1d2500ab79df67254879a1d30f#file-sapjvm-malloc-statistics-sample
>
> Showing you this to maybe get a feeling how memory consumption would be
> if we would track every malloc (which I think we should). This is for a
> test running about 2 hours. We instrument everything, no lower
> threshold. As you see, we have about ~320 callsites including those few
> from JDK (we have instrumented JDK too). However we do not track
> callstacks so most of these callsites may explode to multiple callstacks
> for you in NMT. However however, since you forfeit only low memory
> callsites, I expect that effect not to be large.
>
> ----
>
> following remarks inline:
>
> Yep. This is indeed a source of inaccuracy :-( IIRC, it was due to the
> concern of tracking memory overhead, probably unfounded.
>
> See above. I do not think it would be that costly.
>
Okay, but definitely belongs to different RFE. Let me gather some data
to back it up.
> > --
> >
> > src/hotspot/share/services/memReporter.cpp
> >
> > Of course, here we have exactly the problem you described, that we
> > report more than RSS since thread stacks are not completely committed
> > on AIX. But I can live with that.
> >
> > Looks good. I assume you tried out all that reporting code by
> > "faking" malloc-like thread stack allocation on your machine?
> Yes, had to disable a few asserts.
>
> > --
> >
> > src/hotspot/share/services/threadStackTracker.cpp, hpp: looks ok.
> > Should we maybe assert that when deleting a thread stack
> > (ThreadStackTracker::delete_thread_stack), stack size was the same as
> > with create?
> >
> Added assertion in SimpleThreadStackSite::equals(), okay?
>
> Updated webrev: http://cr.openjdk.java.net/~zgu/JDK-8204552/webrev.02/
>
> Thanks,
>
> -Zhengyu
>
> webrev03 looks ok to me.
Sorry, I have not officially post it. Here is webrev.03:
http://cr.openjdk.java.net/~zgu/JDK-8204552/webrev.03/
Thanks,
-Zhengyu
>
> Thanks!
>
> ..Thomas
>
>
More information about the hotspot-runtime-dev
mailing list