Path: blob/aarch64-shenandoah-jdk8u272-b10/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/cmsGCAdaptivePolicyCounters.cpp
38920 views
/*1* Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.2* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.3*4* This code is free software; you can redistribute it and/or modify it5* under the terms of the GNU General Public License version 2 only, as6* published by the Free Software Foundation.7*8* This code is distributed in the hope that it will be useful, but WITHOUT9* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or10* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License11* version 2 for more details (a copy is included in the LICENSE file that12* accompanied this code).13*14* You should have received a copy of the GNU General Public License version15* 2 along with this work; if not, write to the Free Software Foundation,16* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.17*18* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA19* or visit www.oracle.com if you need additional information or have any20* questions.21*22*/2324#include "precompiled.hpp"25#include "gc_implementation/concurrentMarkSweep/cmsGCAdaptivePolicyCounters.hpp"26#include "memory/resourceArea.hpp"2728CMSGCAdaptivePolicyCounters::CMSGCAdaptivePolicyCounters(const char* name_arg,29int collectors,30int generations,31AdaptiveSizePolicy* size_policy_arg)32: GCAdaptivePolicyCounters(name_arg,33collectors,34generations,35size_policy_arg) {36if (UsePerfData) {37EXCEPTION_MARK;38ResourceMark rm;3940const char* cname =41PerfDataManager::counter_name(name_space(), "cmsCapacity");42_cms_capacity_counter = PerfDataManager::create_variable(SUN_GC, cname,43PerfData::U_Bytes, (jlong) OldSize, CHECK);44#ifdef NOT_PRODUCT45cname =46PerfDataManager::counter_name(name_space(), "initialPause");47_initial_pause_counter = PerfDataManager::create_variable(SUN_GC, cname,48PerfData::U_Ticks,49(jlong) cms_size_policy()->avg_initial_pause()->last_sample(),50CHECK);5152cname = PerfDataManager::counter_name(name_space(), "remarkPause");53_remark_pause_counter = PerfDataManager::create_variable(SUN_GC, cname,54PerfData::U_Ticks,55(jlong) cms_size_policy()->avg_remark_pause()->last_sample(),56CHECK);57#endif58cname =59PerfDataManager::counter_name(name_space(), "avgInitialPause");60_avg_initial_pause_counter = PerfDataManager::create_variable(SUN_GC, cname,61PerfData::U_Ticks,62(jlong) cms_size_policy()->avg_initial_pause()->average(),63CHECK);6465cname = PerfDataManager::counter_name(name_space(), "avgRemarkPause");66_avg_remark_pause_counter = PerfDataManager::create_variable(SUN_GC, cname,67PerfData::U_Ticks,68(jlong) cms_size_policy()->avg_remark_pause()->average(),69CHECK);7071cname = PerfDataManager::counter_name(name_space(), "avgSTWGcCost");72_avg_cms_STW_gc_cost_counter = PerfDataManager::create_variable(SUN_GC,73cname,74PerfData::U_Ticks,75(jlong) cms_size_policy()->avg_cms_STW_gc_cost()->average(),76CHECK);7778cname = PerfDataManager::counter_name(name_space(), "avgSTWTime");79_avg_cms_STW_time_counter = PerfDataManager::create_variable(SUN_GC,80cname,81PerfData::U_Ticks,82(jlong) cms_size_policy()->avg_cms_STW_time()->average(),83CHECK);848586cname = PerfDataManager::counter_name(name_space(), "avgConcurrentTime");87_avg_concurrent_time_counter = PerfDataManager::create_variable(SUN_GC,88cname,89PerfData::U_Ticks,90(jlong) cms_size_policy()->avg_concurrent_time()->average(),91CHECK);9293cname =94PerfDataManager::counter_name(name_space(), "avgConcurrentInterval");95_avg_concurrent_interval_counter = PerfDataManager::create_variable(SUN_GC,96cname,97PerfData::U_Ticks,98(jlong) cms_size_policy()->avg_concurrent_interval()->average(),99CHECK);100101cname = PerfDataManager::counter_name(name_space(), "avgConcurrentGcCost");102_avg_concurrent_gc_cost_counter = PerfDataManager::create_variable(SUN_GC,103cname,104PerfData::U_Ticks,105(jlong) cms_size_policy()->avg_concurrent_gc_cost()->average(),106CHECK);107108cname = PerfDataManager::counter_name(name_space(), "avgCMSFreeAtSweep");109_avg_cms_free_at_sweep_counter = PerfDataManager::create_variable(SUN_GC,110cname,111PerfData::U_Ticks,112(jlong) cms_size_policy()->avg_cms_free_at_sweep()->average(),113CHECK);114115cname = PerfDataManager::counter_name(name_space(), "avgCMSFree");116_avg_cms_free_counter = PerfDataManager::create_variable(SUN_GC,117cname,118PerfData::U_Ticks,119(jlong) cms_size_policy()->avg_cms_free()->average(),120CHECK);121122cname = PerfDataManager::counter_name(name_space(), "avgCMSPromo");123_avg_cms_promo_counter = PerfDataManager::create_variable(SUN_GC,124cname,125PerfData::U_Ticks,126(jlong) cms_size_policy()->avg_cms_promo()->average(),127CHECK);128129cname = PerfDataManager::counter_name(name_space(), "avgMscPause");130_avg_msc_pause_counter = PerfDataManager::create_variable(SUN_GC,131cname,132PerfData::U_Ticks,133(jlong) cms_size_policy()->avg_msc_pause()->average(),134CHECK);135136cname = PerfDataManager::counter_name(name_space(), "avgMscInterval");137_avg_msc_interval_counter = PerfDataManager::create_variable(SUN_GC,138cname,139PerfData::U_Ticks,140(jlong) cms_size_policy()->avg_msc_interval()->average(),141CHECK);142143cname = PerfDataManager::counter_name(name_space(), "mscGcCost");144_msc_gc_cost_counter = PerfDataManager::create_variable(SUN_GC,145cname,146PerfData::U_Ticks,147(jlong) cms_size_policy()->avg_msc_gc_cost()->average(),148CHECK);149150cname = PerfDataManager::counter_name(name_space(), "avgMsPause");151_avg_ms_pause_counter = PerfDataManager::create_variable(SUN_GC,152cname,153PerfData::U_Ticks,154(jlong) cms_size_policy()->avg_ms_pause()->average(),155CHECK);156157cname = PerfDataManager::counter_name(name_space(), "avgMsInterval");158_avg_ms_interval_counter = PerfDataManager::create_variable(SUN_GC,159cname,160PerfData::U_Ticks,161(jlong) cms_size_policy()->avg_ms_interval()->average(),162CHECK);163164cname = PerfDataManager::counter_name(name_space(), "msGcCost");165_ms_gc_cost_counter = PerfDataManager::create_variable(SUN_GC,166cname,167PerfData::U_Ticks,168(jlong) cms_size_policy()->avg_ms_gc_cost()->average(),169CHECK);170171cname = PerfDataManager::counter_name(name_space(), "majorGcCost");172_major_gc_cost_counter = PerfDataManager::create_variable(SUN_GC, cname,173PerfData::U_Ticks, (jlong) cms_size_policy()->cms_gc_cost(), CHECK);174175cname = PerfDataManager::counter_name(name_space(), "avgPromotedAvg");176_promoted_avg_counter =177PerfDataManager::create_variable(SUN_GC, cname, PerfData::U_Bytes,178cms_size_policy()->calculated_promo_size_in_bytes(), CHECK);179180cname = PerfDataManager::counter_name(name_space(), "avgPromotedDev");181_promoted_avg_dev_counter =182PerfDataManager::create_variable(SUN_GC, cname, PerfData::U_Bytes,183(jlong) 0 , CHECK);184185cname = PerfDataManager::counter_name(name_space(), "avgPromotedPaddedAvg");186_promoted_padded_avg_counter =187PerfDataManager::create_variable(SUN_GC, cname, PerfData::U_Bytes,188cms_size_policy()->calculated_promo_size_in_bytes(), CHECK);189190cname = PerfDataManager::counter_name(name_space(),191"changeYoungGenForMajPauses");192_change_young_gen_for_maj_pauses_counter =193PerfDataManager::create_variable(SUN_GC, cname, PerfData::U_Events,194(jlong)0, CHECK);195196cname = PerfDataManager::counter_name(name_space(), "remarkPauseOldSlope");197_remark_pause_old_slope_counter =198PerfDataManager::create_variable(SUN_GC, cname, PerfData::U_Bytes,199(jlong) cms_size_policy()->remark_pause_old_slope(), CHECK);200201cname = PerfDataManager::counter_name(name_space(), "initialPauseOldSlope");202_initial_pause_old_slope_counter =203PerfDataManager::create_variable(SUN_GC, cname, PerfData::U_Bytes,204(jlong) cms_size_policy()->initial_pause_old_slope(), CHECK);205206cname =207PerfDataManager::counter_name(name_space(), "remarkPauseYoungSlope") ;208_remark_pause_young_slope_counter =209PerfDataManager::create_variable(SUN_GC, cname, PerfData::U_Bytes,210(jlong) cms_size_policy()->remark_pause_young_slope(), CHECK);211212cname =213PerfDataManager::counter_name(name_space(), "initialPauseYoungSlope");214_initial_pause_young_slope_counter =215PerfDataManager::create_variable(SUN_GC, cname, PerfData::U_Bytes,216(jlong) cms_size_policy()->initial_pause_young_slope(), CHECK);217218219}220assert(size_policy()->is_gc_cms_adaptive_size_policy(),221"Wrong type of size policy");222}223224void CMSGCAdaptivePolicyCounters::update_counters() {225if (UsePerfData) {226GCAdaptivePolicyCounters::update_counters_from_policy();227update_counters_from_policy();228}229}230231void CMSGCAdaptivePolicyCounters::update_counters(CMSGCStats* gc_stats) {232if (UsePerfData) {233update_counters();234update_promoted((size_t) gc_stats->avg_promoted()->last_sample());235update_avg_promoted_avg(gc_stats);236update_avg_promoted_dev(gc_stats);237update_avg_promoted_padded_avg(gc_stats);238}239}240241void CMSGCAdaptivePolicyCounters::update_counters_from_policy() {242if (UsePerfData && (cms_size_policy() != NULL)) {243244GCAdaptivePolicyCounters::update_counters_from_policy();245246update_major_gc_cost_counter();247update_mutator_cost_counter();248249update_eden_size();250update_promo_size();251252// If these updates from the last_sample() work,253// revise the update methods for these counters254// (both here and in PS).255update_survived((size_t) cms_size_policy()->avg_survived()->last_sample());256257update_avg_concurrent_time_counter();258update_avg_concurrent_interval_counter();259update_avg_concurrent_gc_cost_counter();260#ifdef NOT_PRODUCT261update_initial_pause_counter();262update_remark_pause_counter();263#endif264update_avg_initial_pause_counter();265update_avg_remark_pause_counter();266267update_avg_cms_STW_time_counter();268update_avg_cms_STW_gc_cost_counter();269270update_avg_cms_free_counter();271update_avg_cms_free_at_sweep_counter();272update_avg_cms_promo_counter();273274update_avg_msc_pause_counter();275update_avg_msc_interval_counter();276update_msc_gc_cost_counter();277278update_avg_ms_pause_counter();279update_avg_ms_interval_counter();280update_ms_gc_cost_counter();281282update_avg_old_live_counter();283284update_survivor_size_counters();285update_avg_survived_avg_counters();286update_avg_survived_dev_counters();287288update_decrement_tenuring_threshold_for_gc_cost();289update_increment_tenuring_threshold_for_gc_cost();290update_decrement_tenuring_threshold_for_survivor_limit();291292update_change_young_gen_for_maj_pauses();293294update_major_collection_slope_counter();295update_remark_pause_old_slope_counter();296update_initial_pause_old_slope_counter();297update_remark_pause_young_slope_counter();298update_initial_pause_young_slope_counter();299300update_decide_at_full_gc_counter();301}302}303304305