# HG changeset patch # User david # Date 1455264732 -3600 # Node ID c830c234e0566cf03d8f7da74460cc8696d352f7 # Parent 5737705c0412084ec81b81012004a698491427f4 8009538: [Event Request] Want events for tenuring distribution Reviewed-by: jwilhelm, sjohanss diff -r 5737705c0412 -r c830c234e056 hotspot/src/share/vm/gc/shared/ageTable.cpp --- a/hotspot/src/share/vm/gc/shared/ageTable.cpp Thu Feb 11 15:43:30 2016 -0500 +++ b/hotspot/src/share/vm/gc/shared/ageTable.cpp Fri Feb 12 09:12:12 2016 +0100 @@ -24,6 +24,7 @@ #include "precompiled.hpp" #include "gc/shared/ageTable.inline.hpp" +#include "gc/shared/ageTableTracer.hpp" #include "gc/shared/collectedHeap.hpp" #include "gc/shared/collectorPolicy.hpp" #include "gc/shared/gcPolicyCounters.hpp" @@ -100,17 +101,19 @@ log_debug(gc, age)("Desired survivor size " SIZE_FORMAT " bytes, new threshold " UINTX_FORMAT " (max threshold " UINTX_FORMAT ")", desired_survivor_size*oopSize, (uintx) result, MaxTenuringThreshold); - if (log_is_enabled(Trace, gc, age) || UsePerfData) { + if (log_is_enabled(Trace, gc, age) || UsePerfData || AgeTableTracer::is_tenuring_distribution_event_enabled()) { size_t total = 0; uint age = 1; while (age < table_size) { - total += sizes[age]; - if (sizes[age] > 0) { + size_t wordSize = sizes[age]; + total += wordSize; + if (wordSize > 0) { log_trace(gc, age)("- age %3u: " SIZE_FORMAT_W(10) " bytes, " SIZE_FORMAT_W(10) " total", - age, sizes[age]*oopSize, total*oopSize); + age, wordSize*oopSize, total*oopSize); } + AgeTableTracer::send_tenuring_distribution_event(age, wordSize*oopSize); if (UsePerfData) { - _perf_sizes[age]->set_value(sizes[age]*oopSize); + _perf_sizes[age]->set_value(wordSize*oopSize); } age++; } diff -r 5737705c0412 -r c830c234e056 hotspot/src/share/vm/gc/shared/ageTableTracer.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hotspot/src/share/vm/gc/shared/ageTableTracer.cpp Fri Feb 12 09:12:12 2016 +0100 @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + * + */ + +#include "precompiled.hpp" +#include "gc/shared/ageTableTracer.hpp" +#include "gc/shared/gcId.hpp" +#include "trace/tracing.hpp" + +void AgeTableTracer::send_tenuring_distribution_event(uint age, size_t size) { + EventTenuringDistribution e; + if (e.should_commit()) { + e.set_gcId(GCId::current()); + e.set_age(age); + e.set_size(size); + e.commit(); + } +} + +bool AgeTableTracer::is_tenuring_distribution_event_enabled() { + return EventTenuringDistribution::is_enabled(); +} diff -r 5737705c0412 -r c830c234e056 hotspot/src/share/vm/gc/shared/ageTableTracer.hpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hotspot/src/share/vm/gc/shared/ageTableTracer.hpp Fri Feb 12 09:12:12 2016 +0100 @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + * + */ + +#ifndef SHARE_VM_GC_SHARED_AGETABLETRACER_HPP +#define SHARE_VM_GC_SHARED_AGETABLETRACER_HPP + +#include "memory/allocation.hpp" + +class AgeTableTracer : AllStatic { + public: + static void send_tenuring_distribution_event(uint age, size_t size); + static bool is_tenuring_distribution_event_enabled(); +}; + +#endif // SHARE_VM_GC_SHARED_AGETABLETRACER_HPP diff -r 5737705c0412 -r c830c234e056 hotspot/src/share/vm/trace/trace.xml --- a/hotspot/src/share/vm/trace/trace.xml Thu Feb 11 15:43:30 2016 -0500 +++ b/hotspot/src/share/vm/trace/trace.xml Fri Feb 12 09:12:12 2016 +0100 @@ -479,6 +479,13 @@ + + + + + +