Граф коммитов

28 Коммитов

Автор SHA1 Сообщение Дата
kasperk81 9fc5447c33
use correct framework (#132) 2024-09-28 16:22:20 -07:00
Ivan Berg 950a62e749 Upgrade to Perfetto Trace_processor_shell.exe v45 which officialy includes debug .pdb and fixes binskim errors, among other improvements 2024-06-10 15:35:29 -07:00
ivberg 144d42c56b
Upgrade to supported .NET8 (from .NET 3.1 for UT and LTTngDriver). Upgrade to latest supported Perf SDK point release (#122)
* Upgrade to supported .NET8 (from .NET 3.1 for UT and LTTngDriver). Upgrade to latest supported Perf SDK point release
2024-05-15 13:58:52 -07:00
ivberg 3170e29ed8
Perfetto - Upgrade to latest Perfetto v38 and Protobuf 3.25.0 /w .pdb (#115)
* Perfetto - Upgrade to latest Perfetto v38 and Protobuf 3.25.0 /w .pdb
2023-11-07 14:06:45 -08:00
ivberg 3cd6d574a7
Fix for Issue 109 - PopulateCpuWakeEvents - ---> System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values. (Parameter 'index') (#110)
-Add some of the waker metadata as default hidden columns
2023-05-10 15:30:14 -07:00
ivberg cce4f8301a
Unable to process LTTng trace on .NET 6.0 (#103)
* Fix for breaking change in .NET 6.0 that broke LTTng parser - Partial and zero-byte reads in DeflateStream - https://learn.microsoft.com/en-us/dotnet/core/compatibility/core-libraries/6.0/partial-byte-reads-in-streams

* Upgrade to Antlr runtime 4.11.1 in hopes it fixed this issue (it didn't). Also fixes build failure during upgrade per https://github.com/kaby76/Antlr4BuildTasks/issues/31

* Upgrade all other Nugets as well
2023-01-11 13:15:17 -08:00
ivberg 265cd977e6
Support in Perfetto for event Exclusive Duration (duration minus it's children) to get just time spent exclusively in that slice (function) (#94) 2022-05-23 12:22:08 -07:00
ivberg 08a91b6e1c
User/ivberg/perfetto ut cov (#92)
* Build tables to test & get code coverage for table generation used by UI. Get all data to test for issues seen with projectors vs certain data. Increases Perfetto CC from 32% to 83%

* Fix LTTng tables not implementing IsDataAvailable(). Increase LTTng code coverage from 56% -> 61% by covering table & data projectors
2022-05-02 16:49:17 -07:00
ivberg 107e4e405a
User/ivberg/perfetto process (#91)
* Bring GUI Table Process support with arg fields & process label from Chromium. 
* Enhance GenericEvents to show this process label info if available.
* Add Android Package table
* Add rowcount logging for Perfetto sql queries. 
* Slightly better Unit Tests for new tables by building tables as well (data not processed yet)
2022-04-28 14:48:18 -07:00
Sean Oliver 096a5cefd4 PR feedback 2022-04-18 17:05:41 -07:00
Sean Oliver d3972c0820 Unit test for JankFrames 2022-03-25 11:57:16 -07:00
ivberg 8600d702fb
Upgrade Perfetto Trace Processor from v18.0(2021-08-02) to v24.2 (2022-02-10). It has some perf upgrades like "Speeded up proto trace ingestion by 2x" (#85) 2022-03-02 16:20:42 -08:00
ivberg 6b24a15a0c
Update to 1.0 version of the PerfToolkit SDK + other Nuget pkgs (#80)
* Update to 1.0 version of the PerfToolkit SDK + other Nuget pkgs
2022-02-07 12:40:07 -08:00
Luke Bordonaro ad423446c1 Cleanup 2021-11-12 10:09:38 -08:00
Luke Bordonaro 788aca0648 Bump to 1.0.9-rc1 2021-11-11 14:28:44 -08:00
yashsharma-msft 5b32c5ff0e
Add previous CPU scheduling event info. (#59)
* Add previous CPU scheduling event info.

* Update comments.
2021-10-15 12:39:13 -07:00
Kyle Storck 58c2eb02cd
Perfetto plugin - Added table for GPU counters (#57)
Added table for GPU counters. Also fixed a few SDK deprecations.
2021-10-14 16:32:54 -07:00
yashsharma-msft 0b3eb6fe10
Add wake info in scheduling table. (#56)
* Add wake info in scheduling table.

* Address feedback comments.

* Address feedback comments 2.

* Add launchSetting.json in .gitignore.

* Update thread name in unit test.
2021-10-14 16:08:45 -07:00
ivberg eb85ff8dcc
CPU Sampling Support (#54)
* First check-in of initial CPU sampling verifying we get some basic data with sample & proc/thread. 
* Upgrade all NuGet deps including Performance.SDK to 0.109.24 (fix breaking changes). Add trace processor shell logging to Perfetto UT
* Walk the stack and produce StackWalk Module!Function array as well as Instruction Pointer (IP) Module & Function
* Add some Unit Tests for CPU Sampling and a small Android 12 trace with CPU Sampling
2021-10-12 16:59:09 -07:00
ivberg a8dfe396f0
Align GenericEvents process & thread display with CPU Scheduling (#49)
* Align GenericEvents process & thread display with CPU Scheduling to make it easier to find the exact thread that is consuming CPU between tables
2021-09-21 22:12:24 -07:00
Kyle Storck 1e2a9a7fa4
Perfetto plugin - Memory optimizations and table renaming (#48)
Made some memory optimizations to help improve the sluggishness in WPA when viewing large traces. Memory optimizations reduce memory usage by about 50%. UI is more responsive now. Optimizations include

Used string interning on the high-count string fields
Switched the variable length argument fields from List to string[]
Changed bunch of longs to ints. These are mostly ID fields. Confirmed they are int or smaller within Perfetto
Table renaming

Removed redundant "Perfetto" from all tables and column config names
Added column configs that graph by StartTime instead of duration for GenericEvents

Added fix for duplicate GUIDs
2021-09-21 10:55:21 -07:00
ivberg ba00be55d8
Add Parent/Child Name Tree to GenericEvents to provide new non-default Hierarchical / Stack view (#46)
* Add ParentTree to GenericEvents and provide new non-default Hierarchical / Stack view of this named "Perfetto Trace Events - Process-Thread-ParentNameTree"
2021-09-14 15:12:02 -07:00
ivberg 4d35a59e69
Add tracking of parent depth level in order to show parent/child relationships (#45)
Add tracking of parent depth level in order to show parent/child relationships and more closely match Perfetto UI. Also fix various scalar data types that can come across as optional / nullable.
2021-09-13 15:39:30 -07:00
Kyle Storck a2326c8931
Perfetto plugin - Fix for missing generic events (#42)
A type of Generic Events were being excluded from the previous generic event query. Generic events can come with a thread and a process, or just with a process. We were missing out on the latter. Added a query for the process_track table which allows us to query events that only have a process. Modified the giant LINQ query to use LEFT OUTER JOIN syntax because there are 2 valid paths now.

Added a table config to better view process-only Generic Events and also a table config that shows Generic Event activity.

Unit tests needed to be updated because the output changed slightly
2021-09-08 14:22:26 -07:00
Kyle Storck d9347f419b
Perfetto plugin - Add % CPU usage to CPU scheduler view. Memory unit tests (#36)
Added % CPU usage graphs to CPU scheduler view. Removed the idle thread('swapper') from CPU scheduler graphs
Added unit tests for new memory tables
2021-09-03 11:55:29 -07:00
Kyle Storck 5e97a0749d
Perfetto plugin - Added tables for per-process memory and system memory (#35)
Added table that displays memory for each process based on /proc//status
Added table that displays overall system memory based on /proc/meminfo
Reorganized table groups into "Perfetto - Android", "Perfetto - Events", and "Perfetto - System"
Reorganized namespaces and PerfettoPluginConstants
2021-09-02 14:14:24 -07:00
Kyle Storck 9953b1fb47
Preparing to merge Perfetto branch into develop (#30)
A few small changes before I merge the Perfetto branch into develop.

Changed path for Perfetto plugin in build pipeline
Updated main README to include Perfetto information
Restructured and added more Perfetto unit tests
2021-08-23 15:14:06 -07:00
Kyle Storck 396aa28646
Initial Perfetto plugin checkin (#21)
This PR adds a plugin for displaying generic events from Perfetto traces. Added a new "PerfettoCds" project to the solution. Keeping this in a separate "perfetto" feature branch while I work on it.

Data is gathered from the Perfetto trace through trace_processor_shell.exe. Trace_processor_shell.exe opens an interface that allows for making SQL queries over HTTP/RPC to localhost. All the trace data is retrieved with SQL queries. Data is serialized over the HTTP interface with Protobuf objects. The original TraceProcessor protobuf object (trace_processor.proto) and the C# conversions are included in the project.

PerfettoSourceParser will start the trace_processor_shell.exe process. SQL Queries will be made over HTTP and the protobuf output will be converted to objects of type PerfettoSqlEvent. One query will be made per SQL table. Each query will produce events of the same type and will be processed by their own individual source cooker. For a complete generic event, we need data from 5 tables: slice, args, thread_track, thread, and process. A composite cooker will then take all the data gathered from each individual source cooker and join them to create the final generic event.

For example, for the slice table, the process goes like this:

Perform a SQL query into the Perfetto trace through trace_processor_shell.exe ("select * from slice"). Returns a QueryResult object
Convert QueryResult object into individual PerfettoSliceEvents. One event for each row in the SQL table
PerfettoSliceCooker will process/store all the PerfettoSliceEvents.
Once all the other tables have also finished, PerfettoGenericEventCooker will gather all the events from each cooker and do a join on them to create complete PerfettoGenericEvent objects.
Create WPA table of PerfettoGenericEvents
2021-07-08 14:27:27 -07:00