RFR (xxs) JDK-8012525 gc/metaspace/G1AddMetaspaceDependency.java Test fails a safepoint timeout assertion or hangs.
Thomas Schatzl
thomas.schatzl at oracle.com
Wed Oct 2 11:25:59 UTC 2013
Hi Bernd,
On Tue, 2013-10-01 at 12:09 +0200, Mikael Gerdin wrote:
> On 10/01/2013 12:05 PM, Bernd Eckenfels wrote:
> > Is the Bug about the Test failing or about the two slow path?
>
> The bug is about the test hitting the timeout limit for the test harness.
>
> >
> > If it is about the test will there be work on the notorious slow path (if it is so easy to provoke)?
>
> The test runs with -XX:G1UpdateBufferSize=1, it's a _very_ bad idea to
> run with this setting but it was extremely useful to provoke the bug
> that the regression test was attached to.
To maybe make the impact of that particular value for G1UpdateBufferSize
more clear: a G1UpdateBufferSize=1 results in a call to the VM for every
card dirtied.
I.e. when allocating a 40MB array as in the test case, you incur ~80k VM
calls... add in that all the timeouts were reported in a (fast-)debug
build this slows down the VM noticably.
In that particular case encountered in the test (allocating an array not
containing object references) it might be possible to avoid the card
dirtying altogether though:
I.e. it might be possible to special-case this in
CollectedHeap::flush_deferred_store_barrier()/
CollectedHeap::ensure_parsability()/
CollectedHeap::can_elide_initializing_store_barrier() (or probably
better in the BarrierSet implementation) check if the object may
actually contain references.
Mikael: Maybe worth investigating? But I would keep this fix for now.
Thomas
More information about the hotspot-gc-dev
mailing list