Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(235)

Unified Diff: tools/telemetry/telemetry/timeline/model.py

Issue 296623002: Integrate perfvis profiling mode, and temporary report generator. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tools/telemetry/telemetry/page/page_runner.py ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/telemetry/telemetry/timeline/model.py
diff --git a/tools/telemetry/telemetry/timeline/model.py b/tools/telemetry/telemetry/timeline/model.py
index 945a072dac457ec4a00d2040119bac6a42c5c7ca..540ca4262bdb07fa339452c34fd8d4b134e28c4b 100644
--- a/tools/telemetry/telemetry/timeline/model.py
+++ b/tools/telemetry/telemetry/timeline/model.py
@@ -17,6 +17,7 @@ from telemetry.timeline import empty_timeline_data_importer
from telemetry.timeline import event_container
from telemetry.timeline import inspector_importer
from telemetry.timeline import trace_event_importer
+from telemetry.core.platform.profiler import perfvis_profiler
# Register importers for data
@@ -62,6 +63,8 @@ class TimelineModel(event_container.TimelineEventContainer):
self.import_errors = []
self.metadata = []
self.flow_events = []
+ self.time_shift = 0.0
+
if timeline_data is not None:
self.ImportTraces(timeline_data, shift_world_to_zero=shift_world_to_zero)
@@ -143,11 +146,39 @@ class TimelineModel(event_container.TimelineEventContainer):
# to prevent the timeline from from being modified.
self._frozen = True
+ # Dirty hack... save frame trace information for perfvis_profiler use.
+ comp_thread = [t for t in self.GetAllThreads() if t.name == 'Compositor']
+ if len(comp_thread) > 0:
+ slices = [
+ s for s in comp_thread[0].all_slices if '::SwapBuffers' in s.name]
+
+ if len(slices) > 2:
+ # Skip first last frames that may have one time costs.
+ num_frames = len(slices) - 2
+ min_time = slices[1].start - self.time_shift
+ max_time = slices[-2].end - self.time_shift
+
+ perfvis_profiler.timeline_metadata = {}
+ perfvis_profiler.timeline_metadata['num_frames'] = num_frames
+ perfvis_profiler.timeline_metadata['start_ts'] = min_time
+ perfvis_profiler.timeline_metadata['end_ts'] = max_time
+
+ perfvis_profiler.timeline_metadata['pid'] = {}
+ for process in self._processes.values():
+ perfvis_profiler.timeline_metadata['pid'][process.pid] = process.name
+
+ perfvis_profiler.timeline_metadata['tid'] = {}
+ for thread in self.GetAllThreads():
+ perfvis_profiler.timeline_metadata['tid'][thread.tid] = thread.name
+ print "### TimelineModel: num_frames: %d, start %0.3f end %0.3f ###" % (
+ num_frames, min_time, max_time)
+
def ShiftWorldToZero(self):
self.UpdateBounds()
if self._bounds.is_empty:
return
shift_amount = self._bounds.min
+ self.time_shift -= shift_amount
for event in self.IterAllEvents():
event.start -= shift_amount
« no previous file with comments | « tools/telemetry/telemetry/page/page_runner.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698