RFR: Adding evacuation failed tracing event
John Cuthbertson
john.cuthbertson at oracle.com
Thu Mar 21 23:16:01 UTC 2013
Hi Jesper,
I've only looked at the first set of changes. I'll look at the second
set later tonight or tomorrow.
On 3/20/2013 4:46 PM, Jesper Wilhelmsson wrote:
> Hi,
>
> I'm looking for a couple of reviews for this change.
>
> The change is to add evacuation failed tracing events to G1. Since the
> evacuation failed is very similar to a regular promotion failed in
> other young GCs, these events share most of the code.
>
> I have split the change into two parts:
>
>
> 1) JDK-8009992: Prepare tracing of promotion failed for integration of
> evacuation failed
>
> Webrev: http://cr.openjdk.java.net/~jwilhelm/8009992/webrev/
>
> This part refactors the promotion failed code to use a generic copy
> failed class which is used as the base for the promotion failed handling.
Looks good. Just one nit:
|| _src/share/vm/gc_implementation/shared/gcTraceSend.cpp_
> 95 static TraceStructCopyFailed to_trace_struct(const CopyFailedInfo& cf_info) {
> 96 TraceStructCopyFailed failed_info;
> 97 failed_info.set_objectCount(cf_info.failed_count());
> 98 failed_info.set_firstSize(cf_info.first_size());
> 99 failed_info.set_smallestSize(cf_info.smallest_size());
> 100 failed_info.set_totalSize(cf_info.total_size());
> 101 failed_info.set_thread(cf_info.thread()->thread_id());
> 102 return failed_info;
> 103 }
> 104
> 105 void YoungGCTracer::send_promotion_failed_event(const PromotionFailedInfo& pf_info) const {
> 106 EventPromotionFailed e;
> 107 if (e.should_commit()) {
> 108 e.set_gcId(_shared_gc_info.id());
> 109 e.set_data(to_trace_struct(pf_info));
> 110 e.commit();
> 111 }
> 112 }
Won't this result in executing the copy constructors of
TraceStructCopyFailed multiple times? (One in the return from
to_trace_struct() and one in set_data().) Would it not be more efficient
to return the address of the struct in the EventPromotionFailed, i.e.
to_trace_struct(e.data_addr(), pf_info);
where to_trace_struct() is:
void to_trace_struct(TraceStructCopyFailed* dest_data, const
CopyFailedInfo& cf_info) {
dest_data->set_objectCount(cf_info.failed_count());
...
}
Other than that. It looks OK to me. Now on to the other one.
JohnC
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/hotspot-gc-dev/attachments/20130321/80b406b6/attachment.htm>
More information about the hotspot-gc-dev
mailing list