| Index: tools/perf/measurements/oilpan_gc_times.py
|
| diff --git a/tools/perf/measurements/oilpan_gc_times.py b/tools/perf/measurements/oilpan_gc_times.py
|
| index 3e7fd435329724b5f1d885df76b547d02e06b304..49e0a2e382c999880fb74c11ad414d30b31fb5a9 100644
|
| --- a/tools/perf/measurements/oilpan_gc_times.py
|
| +++ b/tools/perf/measurements/oilpan_gc_times.py
|
| @@ -20,9 +20,11 @@ from telemetry.value import trace
|
| _CR_RENDERER_MAIN = 'CrRendererMain'
|
| _RUN_SMOOTH_ACTIONS = 'RunSmoothAllActions'
|
| _NAMES_TO_DUMP = ['oilpan_precise_mark',
|
| - 'oilpan_precise_sweep',
|
| + 'oilpan_precise_lazy_sweep',
|
| + 'oilpan_precise_complete_sweep',
|
| 'oilpan_conservative_mark',
|
| - 'oilpan_conservative_sweep',
|
| + 'oilpan_conservative_lazy_sweep',
|
| + 'oilpan_conservative_complete_sweep',
|
| 'oilpan_coalesce']
|
|
|
| def _AddTracingResults(events, results):
|
| @@ -35,7 +37,8 @@ def _AddTracingResults(events, results):
|
| gc_type = None
|
| forced = False
|
| mark_time = 0
|
| - sweep_time = 0
|
| + lazy_sweep_time = 0
|
| + complete_sweep_time = 0
|
| for event in events:
|
| duration = event.thread_duration or event.duration
|
| if event.name == 'ThreadHeap::coalesce':
|
| @@ -44,20 +47,26 @@ def _AddTracingResults(events, results):
|
| if event.name == 'Heap::collectGarbage':
|
| if not gc_type is None and not forced:
|
| values['oilpan_%s_mark' % gc_type].append(mark_time)
|
| - values['oilpan_%s_sweep' % gc_type].append(sweep_time)
|
| + values['oilpan_%s_lazy_sweep' % gc_type].append(lazy_sweep_time)
|
| + values['oilpan_%s_complete_sweep' % gc_type].append(complete_sweep_time)
|
|
|
| gc_type = 'precise' if event.args['precise'] else 'conservative'
|
| forced = event.args['forced']
|
| mark_time = duration
|
| - sweep_time = 0
|
| + lazy_sweep_time = 0
|
| + complete_sweep_time = 0
|
| continue
|
| - if event.name == 'ThreadState::performPendingSweep':
|
| - sweep_time += duration
|
| + if event.name == 'ThreadHeap::lazySweepPages':
|
| + lazy_sweep_time += duration
|
| + continue
|
| + if event.name == 'ThreadState::completeSweep':
|
| + complete_sweep_time += duration
|
| continue
|
|
|
| if not gc_type is None and not forced:
|
| values['oilpan_%s_mark' % gc_type].append(mark_time)
|
| - values['oilpan_%s_sweep' % gc_type].append(sweep_time)
|
| + values['oilpan_%s_lazy_sweep' % gc_type].append(lazy_sweep_time)
|
| + values['oilpan_%s_complete_sweep' % gc_type].append(complete_sweep_time)
|
|
|
| # Dump
|
| page = results.current_page
|
| @@ -71,12 +80,24 @@ def _AddTracingResults(events, results):
|
| results.AddValue(scalar.ScalarValue(
|
| page, name + '_total', unit, sum(values[name])))
|
|
|
| - for do_type in ['mark', 'sweep']:
|
| - work_time = 0
|
| + # Summarize marking time
|
| + total_mark_time = 0
|
| + for gc_type in ['precise', 'conservative']:
|
| + total_mark_time += sum(values['oilpan_%s_mark' % gc_type])
|
| + results.AddValue(
|
| + scalar.ScalarValue(page, 'oilpan_mark', unit, total_mark_time))
|
| +
|
| + # Summarize sweeping time
|
| + total_sweep_time = 0
|
| + for do_type in ['lazy_sweep', 'complete_sweep']:
|
| + sweep_time = 0
|
| for gc_type in ['precise', 'conservative']:
|
| - work_time += sum(values['oilpan_%s_%s' % (gc_type, do_type)])
|
| + sweep_time += sum(values['oilpan_%s_%s' % (gc_type, do_type)])
|
| key = 'oilpan_%s' % do_type
|
| - results.AddValue(scalar.ScalarValue(page, key, unit, work_time))
|
| + results.AddValue(scalar.ScalarValue(page, key, unit, sweep_time))
|
| + total_sweep_time += sweep_time
|
| + results.AddValue(
|
| + scalar.ScalarValue(page, 'oilpan_sweep', unit, total_sweep_time))
|
|
|
| gc_time = 0
|
| for key in values:
|
|
|