< prev index next >

src/share/vm/gc/g1/g1GCPhaseTimes.cpp

Print this page
rev 12944 : imported patch 8178148-more-detailed-scan-rs-logging

*** 76,85 **** --- 76,92 ---- _gc_par_phases[Termination] = new WorkerDataArray<double>(max_gc_threads, "Termination (ms):"); _gc_par_phases[GCWorkerTotal] = new WorkerDataArray<double>(max_gc_threads, "GC Worker Total (ms):"); _gc_par_phases[GCWorkerEnd] = new WorkerDataArray<double>(max_gc_threads, "GC Worker End (ms):"); _gc_par_phases[Other] = new WorkerDataArray<double>(max_gc_threads, "GC Worker Other (ms):"); + _scan_rs_scanned_cards = new WorkerDataArray<size_t>(max_gc_threads, "Scanned Cards:"); + _gc_par_phases[ScanRS]->link_thread_work_items(_scan_rs_scanned_cards, ScannedCards); + _scan_rs_claimed_cards = new WorkerDataArray<size_t>(max_gc_threads, "Claimed Cards:"); + _gc_par_phases[ScanRS]->link_thread_work_items(_scan_rs_claimed_cards, ClaimedCards); + _scan_rs_skipped_cards = new WorkerDataArray<size_t>(max_gc_threads, "Skipped Cards:"); + _gc_par_phases[ScanRS]->link_thread_work_items(_scan_rs_skipped_cards, SkippedCards); + _update_rs_processed_buffers = new WorkerDataArray<size_t>(max_gc_threads, "Processed Buffers:"); _gc_par_phases[UpdateRS]->link_thread_work_items(_update_rs_processed_buffers); _termination_attempts = new WorkerDataArray<size_t>(max_gc_threads, "Termination Attempts:"); _gc_par_phases[Termination]->link_thread_work_items(_termination_attempts);
*** 208,229 **** // add a number of seconds to a phase void G1GCPhaseTimes::add_time_secs(GCParPhases phase, uint worker_i, double secs) { _gc_par_phases[phase]->add(worker_i, secs); } ! void G1GCPhaseTimes::record_thread_work_item(GCParPhases phase, uint worker_i, size_t count) { ! _gc_par_phases[phase]->set_thread_work_item(worker_i, count); } // return the average time for a phase in milliseconds double G1GCPhaseTimes::average_time_ms(GCParPhases phase) { return _gc_par_phases[phase]->average() * 1000.0; } ! size_t G1GCPhaseTimes::sum_thread_work_items(GCParPhases phase) { ! assert(_gc_par_phases[phase]->thread_work_items() != NULL, "No sub count"); ! return _gc_par_phases[phase]->thread_work_items()->sum(); } template <class T> void G1GCPhaseTimes::details(T* phase, const char* indent) const { Log(gc, phases, task) log; --- 215,236 ---- // add a number of seconds to a phase void G1GCPhaseTimes::add_time_secs(GCParPhases phase, uint worker_i, double secs) { _gc_par_phases[phase]->add(worker_i, secs); } ! void G1GCPhaseTimes::record_thread_work_item(GCParPhases phase, uint worker_i, size_t count, uint index) { ! _gc_par_phases[phase]->set_thread_work_item(worker_i, count, index); } // return the average time for a phase in milliseconds double G1GCPhaseTimes::average_time_ms(GCParPhases phase) { return _gc_par_phases[phase]->average() * 1000.0; } ! size_t G1GCPhaseTimes::sum_thread_work_items(GCParPhases phase, uint index) { ! assert(_gc_par_phases[phase]->thread_work_items(index) != NULL, "No sub count"); ! return _gc_par_phases[phase]->thread_work_items(index)->sum(); } template <class T> void G1GCPhaseTimes::details(T* phase, const char* indent) const { Log(gc, phases, task) log;
*** 237,252 **** void G1GCPhaseTimes::log_phase(WorkerDataArray<double>* phase, uint indent, outputStream* out, bool print_sum) const { out->print("%s", Indents[indent]); phase->print_summary_on(out, print_sum); details(phase, Indents[indent]); ! WorkerDataArray<size_t>* work_items = phase->thread_work_items(); if (work_items != NULL) { out->print("%s", Indents[indent + 1]); work_items->print_summary_on(out, true); details(work_items, Indents[indent + 1]); } } void G1GCPhaseTimes::debug_phase(WorkerDataArray<double>* phase) const { Log(gc, phases) log; if (log.is_level(LogLevel::Debug)) { --- 244,261 ---- void G1GCPhaseTimes::log_phase(WorkerDataArray<double>* phase, uint indent, outputStream* out, bool print_sum) const { out->print("%s", Indents[indent]); phase->print_summary_on(out, print_sum); details(phase, Indents[indent]); ! for (uint i = 0; i < phase->MaxThreadWorkItems; i++) { ! WorkerDataArray<size_t>* work_items = phase->thread_work_items(i); if (work_items != NULL) { out->print("%s", Indents[indent + 1]); work_items->print_summary_on(out, true); details(work_items, Indents[indent + 1]); } + } } void G1GCPhaseTimes::debug_phase(WorkerDataArray<double>* phase) const { Log(gc, phases) log; if (log.is_level(LogLevel::Debug)) {
< prev index next >