< prev index next >

src/hotspot/share/gc/parallel/psParallelCompact.cpp

Print this page

        

*** 1113,1144 **** const double cur_density = double(space_live) / space_capacity; const double deadwood_density = (1.0 - cur_density) * (1.0 - cur_density) * cur_density * cur_density; const size_t deadwood_goal = size_t(space_capacity * deadwood_density); ! if (TraceParallelOldGCDensePrefix) { ! tty->print_cr("cur_dens=%5.3f dw_dens=%5.3f dw_goal=" SIZE_FORMAT, cur_density, deadwood_density, deadwood_goal); ! tty->print_cr("space_live=" SIZE_FORMAT " " "space_used=" SIZE_FORMAT " " "space_cap=" SIZE_FORMAT, space_live, space_used, space_capacity); - } // XXX - Use binary search? HeapWord* dense_prefix = sd.region_to_addr(cp); const RegionData* full_cp = cp; const RegionData* const top_cp = sd.addr_to_region_ptr(space->top() - 1); while (cp < end_cp) { HeapWord* region_destination = cp->destination(); const size_t cur_deadwood = pointer_delta(dense_prefix, region_destination); ! if (TraceParallelOldGCDensePrefix && Verbose) { ! tty->print_cr("c#=" SIZE_FORMAT_W(4) " dst=" PTR_FORMAT " " ! "dp=" PTR_FORMAT " " "cdw=" SIZE_FORMAT_W(8), sd.region(cp), p2i(region_destination), p2i(dense_prefix), cur_deadwood); - } if (cur_deadwood >= deadwood_goal) { // Found the region that has the correct amount of deadwood to the left. // This typically occurs after crossing a fairly sparse set of regions, so // iterate backwards over those sparse regions, looking for the region --- 1113,1144 ---- const double cur_density = double(space_live) / space_capacity; const double deadwood_density = (1.0 - cur_density) * (1.0 - cur_density) * cur_density * cur_density; const size_t deadwood_goal = size_t(space_capacity * deadwood_density); ! log_develop_debug(gc, compaction)( ! "cur_dens=%5.3f dw_dens=%5.3f dw_goal=" SIZE_FORMAT, cur_density, deadwood_density, deadwood_goal); ! log_develop_debug(gc, compaction)( ! "space_live=" SIZE_FORMAT " space_used=" SIZE_FORMAT " " "space_cap=" SIZE_FORMAT, space_live, space_used, space_capacity); // XXX - Use binary search? HeapWord* dense_prefix = sd.region_to_addr(cp); const RegionData* full_cp = cp; const RegionData* const top_cp = sd.addr_to_region_ptr(space->top() - 1); while (cp < end_cp) { HeapWord* region_destination = cp->destination(); const size_t cur_deadwood = pointer_delta(dense_prefix, region_destination); ! ! log_develop_trace(gc, compaction)( ! "c#=" SIZE_FORMAT_W(4) " dst=" PTR_FORMAT " " ! "dp=" PTR_FORMAT " cdw=" SIZE_FORMAT_W(8), sd.region(cp), p2i(region_destination), p2i(dense_prefix), cur_deadwood); if (cur_deadwood >= deadwood_goal) { // Found the region that has the correct amount of deadwood to the left. // This typically occurs after crossing a fairly sparse set of regions, so // iterate backwards over those sparse regions, looking for the region
*** 1156,1170 **** double prev_region_density_to_right = double(prev_region_live_to_right) / prev_region_space_to_right; if (density_to_right <= prev_region_density_to_right) { return dense_prefix; } ! if (TraceParallelOldGCDensePrefix && Verbose) { ! tty->print_cr("backing up from c=" SIZE_FORMAT_W(4) " d2r=%10.8f " ! "pc_d2r=%10.8f", sd.region(cp), density_to_right, prev_region_density_to_right); ! } dense_prefix -= region_size; live_to_right = prev_region_live_to_right; space_to_right = prev_region_space_to_right; density_to_right = prev_region_density_to_right; } --- 1156,1172 ---- double prev_region_density_to_right = double(prev_region_live_to_right) / prev_region_space_to_right; if (density_to_right <= prev_region_density_to_right) { return dense_prefix; } ! ! log_develop_trace(gc, compaction)( ! "backing up from c=" SIZE_FORMAT_W(4) " d2r=%10.8f " ! "pc_d2r=%10.8f", ! sd.region(cp), density_to_right, prev_region_density_to_right); ! dense_prefix -= region_size; live_to_right = prev_region_live_to_right; space_to_right = prev_region_space_to_right; density_to_right = prev_region_density_to_right; }
*** 1194,1208 **** const size_t space_cap = space->capacity_in_words(); const double dead_to_left_pct = double(dead_to_left) / space_cap; const size_t live_to_right = new_top - cp->destination(); const size_t dead_to_right = space->top() - addr - live_to_right; ! tty->print_cr("%s=" PTR_FORMAT " dpc=" SIZE_FORMAT_W(5) " " "spl=" SIZE_FORMAT " " "d2l=" SIZE_FORMAT " d2l%%=%6.4f " ! "d2r=" SIZE_FORMAT " l2r=" SIZE_FORMAT ! " ratio=%10.8f", algorithm, p2i(addr), region_idx, space_live, dead_to_left, dead_to_left_pct, dead_to_right, live_to_right, double(dead_to_right) / live_to_right); --- 1196,1211 ---- const size_t space_cap = space->capacity_in_words(); const double dead_to_left_pct = double(dead_to_left) / space_cap; const size_t live_to_right = new_top - cp->destination(); const size_t dead_to_right = space->top() - addr - live_to_right; ! log_develop_debug(gc, compaction)( ! "%s=" PTR_FORMAT " dpc=" SIZE_FORMAT_W(5) " " "spl=" SIZE_FORMAT " " "d2l=" SIZE_FORMAT " d2l%%=%6.4f " ! "d2r=" SIZE_FORMAT " l2r=" SIZE_FORMAT " " ! "ratio=%10.8f", algorithm, p2i(addr), region_idx, space_live, dead_to_left, dead_to_left_pct, dead_to_right, live_to_right, double(dead_to_right) / live_to_right);
*** 1411,1430 **** const double limiter = dead_wood_limiter(density, min_percent_free); const size_t dead_wood_max = space_used - space_live; const size_t dead_wood_limit = MIN2(size_t(space_capacity * limiter), dead_wood_max); ! if (TraceParallelOldGCDensePrefix) { ! tty->print_cr("space_live=" SIZE_FORMAT " " "space_used=" SIZE_FORMAT " " "space_cap=" SIZE_FORMAT, space_live, space_used, space_capacity); ! tty->print_cr("dead_wood_limiter(%6.4f, " SIZE_FORMAT ")=%6.4f " "dead_wood_max=" SIZE_FORMAT " dead_wood_limit=" SIZE_FORMAT, density, min_percent_free, limiter, dead_wood_max, dead_wood_limit); - } // Locate the region with the desired amount of dead space to the left. const RegionData* const limit_cp = dead_wood_limit_region(full_cp, top_cp, dead_wood_limit); --- 1414,1433 ---- const double limiter = dead_wood_limiter(density, min_percent_free); const size_t dead_wood_max = space_used - space_live; const size_t dead_wood_limit = MIN2(size_t(space_capacity * limiter), dead_wood_max); ! log_develop_debug(gc, compaction)( ! "space_live=" SIZE_FORMAT " space_used=" SIZE_FORMAT " " "space_cap=" SIZE_FORMAT, space_live, space_used, space_capacity); ! log_develop_debug(gc, compaction)( ! "dead_wood_limiter(%6.4f, " SIZE_FORMAT ")=%6.4f " "dead_wood_max=" SIZE_FORMAT " dead_wood_limit=" SIZE_FORMAT, density, min_percent_free, limiter, dead_wood_max, dead_wood_limit); // Locate the region with the desired amount of dead space to the left. const RegionData* const limit_cp = dead_wood_limit_region(full_cp, top_cp, dead_wood_limit);
*** 1534,1544 **** if (_space_info[id].new_top() != space->bottom()) { HeapWord* dense_prefix_end = compute_dense_prefix(id, maximum_compaction); _space_info[id].set_dense_prefix(dense_prefix_end); #ifndef PRODUCT ! if (TraceParallelOldGCDensePrefix) { print_dense_prefix_stats("ratio", id, maximum_compaction, dense_prefix_end); HeapWord* addr = compute_dense_prefix_via_density(id, maximum_compaction); print_dense_prefix_stats("density", id, maximum_compaction, addr); } --- 1537,1547 ---- if (_space_info[id].new_top() != space->bottom()) { HeapWord* dense_prefix_end = compute_dense_prefix(id, maximum_compaction); _space_info[id].set_dense_prefix(dense_prefix_end); #ifndef PRODUCT ! if (log_is_enabled(Debug, gc, compaction)) { print_dense_prefix_stats("ratio", id, maximum_compaction, dense_prefix_end); HeapWord* addr = compute_dense_prefix_via_density(id, maximum_compaction); print_dense_prefix_stats("density", id, maximum_compaction, addr); }
*** 1608,1627 **** void PSParallelCompact::summary_phase(ParCompactionManager* cm, bool maximum_compaction) { GCTraceTime(Info, gc, phases) tm("Summary Phase", &_gc_timer); ! #ifdef ASSERT ! if (TraceParallelOldGCMarkingPhase) { ! tty->print_cr("add_obj_count=" SIZE_FORMAT " " "add_obj_bytes=" SIZE_FORMAT, ! add_obj_count, add_obj_size * HeapWordSize); ! tty->print_cr("mark_bitmap_count=" SIZE_FORMAT " " "mark_bitmap_bytes=" SIZE_FORMAT, ! mark_bitmap_count, mark_bitmap_size * HeapWordSize); ! } ! #endif // #ifdef ASSERT // Quick summarization of each space into itself, to see how much is live. summarize_spaces_quick(); log_develop_trace(gc, compaction)("summary phase: after summarizing each space to self"); --- 1611,1630 ---- void PSParallelCompact::summary_phase(ParCompactionManager* cm, bool maximum_compaction) { GCTraceTime(Info, gc, phases) tm("Summary Phase", &_gc_timer); ! log_develop_debug(gc, marking)( ! "add_obj_count=" SIZE_FORMAT " " "add_obj_bytes=" SIZE_FORMAT, ! add_obj_count, ! add_obj_size * HeapWordSize); ! log_develop_debug(gc, marking)( ! "mark_bitmap_count=" SIZE_FORMAT " " "mark_bitmap_bytes=" SIZE_FORMAT, ! mark_bitmap_count, ! mark_bitmap_size * HeapWordSize); // Quick summarization of each space into itself, to see how much is live. summarize_spaces_quick(); log_develop_trace(gc, compaction)("summary phase: after summarizing each space to self");
< prev index next >