Exemple #1
0
 public PerfettoCpuCountersEventCooker() : base(PerfettoPluginConstants.CpuCountersEventCookerPath)
 {
     this.CpuCountersEvents =
         new ProcessedEventData <PerfettoCpuCountersEvent>();
 }
Exemple #2
0
 public PerfettoProcessTrackCooker() : base(PerfettoPluginConstants.ProcessTrackCookerPath)
 {
     this.ProcessTrackEvents = new ProcessedEventData <PerfettoProcessTrackEvent>();
 }
 public PerfettoPackageListCooker() : base(PerfettoPluginConstants.PackageListCookerPath)
 {
     this.PackageListEvents = new ProcessedEventData <PerfettoPackageListEvent>();
 }
Exemple #4
0
 public PerfettoExpectedFrameCooker() : base(PerfettoPluginConstants.ExpectedFrameCookerPath)
 {
     this.ExpectedFrameEvents = new ProcessedEventData <PerfettoExpectedFrameEvent>();
 }
Exemple #5
0
 public PerfettoSchedSliceCooker() : base(PerfettoPluginConstants.SchedSliceCookerPath)
 {
     this.SchedSliceEvents = new ProcessedEventData <PerfettoSchedSliceEvent>();
 }
        void PopulateFrameEvents(IDataExtensionRetrieval requiredData, ProcessedEventData <PerfettoThreadEvent> threadData, ProcessedEventData <PerfettoProcessRawEvent> processData)
        {
            var actualFrameData   = requiredData.QueryOutput <ProcessedEventData <PerfettoActualFrameEvent> >(new DataOutputPath(PerfettoPluginConstants.ActualFrameCookerPath, nameof(PerfettoActualFrameCooker.ActualFrameEvents)));
            var expectedFrameData = requiredData.QueryOutput <ProcessedEventData <PerfettoExpectedFrameEvent> >(new DataOutputPath(PerfettoPluginConstants.ExpectedFrameCookerPath, nameof(PerfettoExpectedFrameCooker.ExpectedFrameEvents)));

            // Gather from both actual/expected tables and join with process info
            var joinedActual = from frame in actualFrameData
                               join process in processData on frame.Upid equals process.Upid into pd orderby frame.Id
                               from process in pd.DefaultIfEmpty()
                               select new { frame, process };
            var joinedExpected = from frame in expectedFrameData
                                 join process in processData on frame.Upid equals process.Upid into pd orderby frame.Id
                                 from process in pd.DefaultIfEmpty()
                                 select new { frame, process };

            // Create FrameEvents out of each type of event
            foreach (var result in joinedExpected)
            {
                Timestamp startTimestamp = new Timestamp(result.frame.RelativeTimestamp);
                Timestamp endTimestamp   = new Timestamp(result.frame.RelativeTimestamp + result.frame.Duration);

                PerfettoFrameEvent ev = new PerfettoFrameEvent
                                        (
                    "Expected",
                    result.process.Name,
                    result.frame.Upid,
                    result.frame.DisplayFrameToken,
                    result.frame.SurfaceFrameToken,
                    new TimestampDelta(result.frame.Duration),
                    startTimestamp,
                    endTimestamp,
                    String.Empty,
                    String.Empty,
                    String.Empty,
                    String.Empty,
                    String.Empty,
                    String.Empty
                                        );

                this.FrameEvents.AddEvent(ev);
            }

            foreach (var result in joinedActual)
            {
                Timestamp startTimestamp = new Timestamp(result.frame.RelativeTimestamp);
                Timestamp endTimestamp   = new Timestamp(result.frame.RelativeTimestamp + result.frame.Duration);

                PerfettoFrameEvent ev = new PerfettoFrameEvent
                                        (
                    "Actual",
                    result.process.Name,
                    result.frame.Upid,
                    result.frame.DisplayFrameToken,
                    result.frame.SurfaceFrameToken,
                    new TimestampDelta(result.frame.Duration),
                    startTimestamp,
                    endTimestamp,
                    result.frame.JankType,
                    result.frame.JankTag,
                    result.frame.PresentType,
                    result.frame.PredictionType,
                    result.frame.OnTimeFinish.ToString(),
                    result.frame.GpuComposition.ToString()
                                        );

                this.FrameEvents.AddEvent(ev);
            }

            this.FrameEvents.FinalizeData();
        }
Exemple #7
0
 public EventProjection(ProcessedEventData <T> events)
 {
     this.events = events;
 }