Thanks, Erik.
On 6/18/18, 10:26 AM, "Erik Helin" <[email protected]> wrote:
On 06/18/2018 06:14 PM, Hohensee, Paul wrote:
> Thanks, Eric!
>
> I'd push, but it seems I don't seem to have permission at the moment. Who
should I contact to get that fixed?
That would be [email protected].
Thanks,
Erik
> Thanks,
>
> Paul
>
> On 6/18/18, 7:09 AM, "Erik Helin" <[email protected]> wrote:
>
> On 06/16/2018 09:00 PM, Hohensee, Paul wrote:
> > Thanks for the re-review, Erik. New webrev with your fixes:
> >
> > http://cr.openjdk.java.net/~phh/8195115/webrev.04/
>
> The patch is good to go now, Reviewed.
>
> Thanks,
> Erik
>
> > Need another reviewer, please.
> >
> > Thanks,
> >
> > Paul
> >
> > On 6/16/18, 1:25 AM, "Erik Helin" <[email protected]> wrote:
> >
> > On 06/15/2018 10:21 PM, Hohensee, Paul wrote:
> > > After some difficulty with the submit cluster, with which
Erik helped me out, the patch passes. It also passed fastdebug hotspot tier 1
testing on my Mac laptop, which former includes the new test.
> > >
> > > I had to increase -Xmx and -Xms to 12m in order to get
TestOldGenCollectionUsage to pass on the submit cluster, though the old 10m
works fine on my Mac. New webrev:
> >
> > Thanks, the change of -Xmx and -Xms to 12m now also makes the
test pass
> > on my workstation.
> >
> > > http://cr.openjdk.java.net/~phh/8195115/webrev.03/
> >
> > There seems to be some trailing whitespace in the patch, have
you run
> > jcheck (or `hg diff` which highlights trailing whitespace in
red)?
> > Please see
> >
> > + TraceMemoryManagerStats tms(&_memory_manager, gc_cause(),
> > + collector_state()->yc_type()
== Mixed
> > /* allMemoryPoolsAffected */);
> > +
> > ^---- whitespace
> >
> > and
> >
> > +int MemoryManager::add_pool(MemoryPool* pool) {
> > + int index = _num_pools;
> > ^---- whitespace
> >
> > Another small comment, I would have written
> >
> > +void GCMemoryManager::add_pool(MemoryPool* pool) {
> > + int index = MemoryManager::add_pool(pool);
> > + _pool_always_affected_by_gc[index] = true;
> > +}
> > +
> > +void GCMemoryManager::add_pool(MemoryPool* pool, bool
> > always_affected_by_gc) {
> > + int index = MemoryManager::add_pool(pool);
> > + _pool_always_affected_by_gc[index] = always_affected_by_gc;
> > +}
> > +
> >
> > as
> >
> > +void GCMemoryManager::add_pool(MemoryPool* pool) {
> > + add_pool(pool, true);
> > +}
> > +
> > +void GCMemoryManager::add_pool(MemoryPool* pool, bool
> > always_affected_by_gc) {
> > + int index = MemoryManager::add_pool(pool);
> > + _pool_always_affected_by_gc[index] = always_affected_by_gc;
> > +}
> > +
> >
> > to not have to two duplicate implementations of
> > GCMemoryManager::add_pool. Would you mind updating the patch
with this
> > change (and remove the trailing whitespace)?
> >
> > Thanks,
> > Erik
> >
> > > Thanks,
> > >
> > > Paul
> > >
> > > On 6/12/18, 6:52 AM, "Erik Helin" <[email protected]>
wrote:
> > >
> > > (adding back serviceability-dev, please keep both
hotspot-gc-dev and
> > > serviceability-dev)
> > >
> > > Hi Paul,
> > >
> > > before I start re-reviewing, did you test the new
version of the patch
> > > via the jdk/submit repository [0]?
> > >
> > > Thanks,
> > > Erik
> > >
> > > [0]: http://hg.openjdk.java.net/jdk/submit
> > >
> > > On 06/09/2018 03:29 PM, Hohensee, Paul wrote:
> > > > Didn't seem to make it to hotspot-gc-dev...
> > > >
> > > > On 6/8/18, 10:14 AM, "serviceability-dev on behalf
of Hohensee, Paul" <[email protected] on behalf of
[email protected]> wrote:
> > > >
> > > > Back after a long hiatus...
> > > >
> > > > Thanks, Eric, for your review. Here's a new
webrev incorporating your recommendations.
> > > >
> > > > Bug:
https://bugs.openjdk.java.net/browse/JDK-8195115
> > > > Webrev:
http://cr.openjdk.java.net/~phh/8195115/webrev.02/
> > > >
> > > > TIA for your re-review. Plus, may I have
another reviewer look at it please?
> > > >
> > > > Paul
> > > >
> > > > On 2/26/18, 8:47 AM, "Erik Helin"
<[email protected]> wrote:
> > > >
> > > > Hi Paul,
> > > >
> > > > a couple of comments on the patch:
> > > >
> > > > - memoryService.hpp:
> > > > + 150 bool
countCollection,
> > > > + 151 bool
allMemoryPoolsAffected = true);
> > > >
> > > > There is no need to use a default value
for the parameter
> > > > allMemoryPoolsAffected here. Skipping
the default value also allows
> > > > you to put allMemoryPoolsAffected to
TraceMemoryManager::initialize
> > > > in the same relative position as for the
constructor parameter (this
> > > > will make the code more uniform and
easier to follow).
> > > >
> > > > - memoryManager.cpp
> > > >
> > > > Instead of adding a default parameter,
maybe add a new method?
> > > > Something like
GCMemoryManager::add_not_always_affected_pool()
> > > > (I couldn't come up with a shorter name
at the moment).
> > > >
> > > > - TestMixedOldGenCollectionUsage.java
> > > >
> > > > The test is too strict about how and
when collections should
> > > > occur. Tests written this way often
become very brittle, they might
> > > > e.g. fail to finish a concurrent mark on
time on a very slow, single
> > > > core, machine. It is better to either
force collections by using the
> > > > WhiteBox API or make the test more
lenient.
> > > >
> > > > Thanks,
> > > > Erik
> > > >
> > > > On 02/22/2018 09:54 PM, Hohensee, Paul
wrote:
> > > > > Ping for a review please.
> > > > >
> > > > > Thanks,
> > > > >
> > > > > Paul
> > > > >
> > > > > On 2/16/18, 12:26 PM, "serviceability-dev
on behalf of Hohensee, Paul" <[email protected] on
behalf of [email protected]> wrote:
> > > > >
> > > > > The CSR
https://bugs.openjdk.java.net/browse/JDK-8196719 for the original fix has been
approved, so I’m back to requesting a code review, please.
> > > > >
> > > > > Bug:
https://bugs.openjdk.java.net/browse/JDK-8195115
> > > > > Webrev:
http://cr.openjdk.java.net/~phh/8195115/webrev.hs.01/
> > > > >
> > > > > Passed a submit repo run, passes its
jtreg test, and a JDK8 version is in production use at Amazon.
> > > > >
> > > > > From the original RR:
> > > > >
> > > > > > The bug is that from the JMX
point of view, G1’s incremental collector
> > > > > > (misnamed as the “G1 Young
Generation” collector) only affects G1’s
> > > > > > survivor and eden spaces. In
fact, mixed collections run by this
> > > > > > collector also affect the G1
old generation.
> > > > > >
> > > > > > This proposed fix is to
record, for each of a JMX garbage collector's
> > > > > > memory pools, whether that
memory pool is affected by all collections
> > > > > > using that collector. And, for
each collection, record whether or not
> > > > > > all the collector's memory
pools are affected. After each collection,
> > > > > > for each memory pool, if
either all the collector's memory pools were
> > > > > > affected or the memory pool is
affected for all collections, record
> > > > > > CollectionUsage for that pool.
> > > > > >
> > > > > > For collectors other than G1
Young Generation, all pools are recorded as
> > > > > > affected by all collections
and every collection is recorded as
> > > > > > affecting all the collector’s
memory pools. For the G1 Young Generation
> > > > > > collector, the G1 Old Gen pool
is recorded as not being affected by all
> > > > > > collections, and non-mixed
collections are recorded as not affecting all
> > > > > > memory pools. The result is
that for non-mixed collections,
> > > > > > CollectionUsage is recorded
after a collection only the G1 Eden Space
> > > > > > and G1 Survivor Space pools,
while for mixed collections CollectionUsage
> > > > > > is recorded for G1 Old Gen as
well.
> > > > > >
> > > > > > Other than the effect of the
fix on G1 Old Gen MemoryPool.
> > > > > > CollectionUsage, the only
external behavior change is that
> > > > > >
GarbageCollectorMXBean.getMemoryPoolNames will now return 3 pool names
> > > > > > rather than 2.
> > > > > >
> > > > > > With this fix, a collector’s
memory pools can be divided into two
> > > > > > disjoint subsets, one that
participates in all collections and one that
> > > > > > doesn’t. This is a bit more
general than the minimum necessary to fix
> > > > > > G1, but not by much. Because I
expect it to apply to other incremental
> > > > > > region-based collectors, I
went with the more general solution. I
> > > > > > minimized the amount of code I
had to touch by using default parameters
> > > > > > for GCMemoryManager::add_pool
and the TraceMemoryManagerStats constructors.
> > > > >
> > > > >
> > > > >
> > > >
> > > >
> > > >
> > > >
> > >
> > >
> >
> >
>
>