156 Commits

Author SHA1 Message Date
ben woodhouse
9dad59c28a PerfReportTool 4.230.0 - Add support for variables which can be used outside of individual CSV reporting. Any variable declared in a variableSet without a metadata query can be used in this way. This is useful if we want to access variables in SummaryTable definitions for example. Also strip whitespace in summary table row sort and filter lists
[CL 30955857 by ben woodhouse in 5.4 branch]
2024-01-27 11:30:17 -05:00
tyler staples
ed483b845c PRT - Update help text to include new dynamic graph args.
Also removed deprecated externalGraphs arg

#rnx

#rb ben.woodhouse

[CL 30719102 by tyler staples in ue5-main branch]
2024-01-19 12:23:26 -05:00
ben woodhouse
a941e9c6bf PerfReportTool: Minor tweaks to heading formatting for better use of vertical space. Graphs now use h3 instead of h2
[CL 30718644 by ben woodhouse in ue5-main branch]
2024-01-19 12:12:16 -05:00
ben woodhouse
30d7164b7e PerfReportTool 4.29.0 - Detailed report improvements: Add a top level nav bar with buttons to expand and collapse all sections and jump to the graphs. Clicking on a graph in the list now expands it
[CL 30715173 by ben woodhouse in ue5-main branch]
2024-01-19 09:51:48 -05:00
tyler staples
a718fe697a PRS - Dynamically load graphs in generated reports
Updates the full report generation to optionally embed a url to the csvtosvg end point to create and display graphs on demand rather than generating them offline. This reduces the size of the reports by about 250x.

+ Updated GetCsvToSvgArgs to have different output formats (command line, url).
+ Added -useEmbeddedGraphUrl arg to specify inserting the url instead of fully inlining the graph. This is accompanied by -embeddedGraphUrlRoot to specify the base url to target.
+ Removed the concept and handling of external graphs as the code path wasn't used and didn't work.
+ Refactored GenerateReport to create a list of CsvSvgInfo objects to better handle the different formats (url, inline).
+ Updated command line handling to decoded − into '-' to fix an issue where negative numbers were treated as arguments.
+ Remove giant graphs from ReportTypes.xml as they're unused.

#rnx

#rb ben.woodhouse
#tests prt compare tests, manual testing

[CL 30677752 by tyler staples in ue5-main branch]
2024-01-17 22:10:33 -05:00
ben woodhouse
b21a22c2b5 PerfreportTool 4.227.1 : Fix extraLinks summary null dereference. Add utf-8 charset to meta
[CL 30664963 by ben woodhouse in ue5-main branch]
2024-01-17 14:32:03 -05:00
ben woodhouse
3ab21db8c2 PerfReportTool 4.227.0
Make summaries and graphs collapsible. Summaries can start collapsed if specified in xml via the "collapsed" attribute.
Add a new HtmlSection helper class to assist with this.
We may later want to extend this functionality to add a top level hierarchy to the report, allowing us to have high level sections with multiple summaries in them.

[FYI] tyler.staples

[CL 30660748 by ben woodhouse in ue5-main branch]
2024-01-17 11:57:59 -05:00
ben woodhouse
130703b8a1 PerfReportTool: Optimize commandline parsing. Some args can be very long when response files are passed so use a stringbuilder for concatenation. Commandline parsing could take 40s for a summarytable with 3000 PRC entries before.
#rb tyler.staples

[CL 30624170 by ben woodhouse in ue5-main branch]
2024-01-15 16:21:32 -05:00
ben woodhouse
477d1387ed PerfReportTool 4.226.0: Add a stat budgets summary type
This summary type sums up multiple CsvStat averages and emits the total as a SummaryTableMetric named metricName (if specified).
- Budget colors can optionally be applied to individual stats and/or the total via colourThresholds and colourThresholdsTotal nodes
- If emitStatMetrics is enabled, each stat will emit a SummaryTableMetric, named metricName/strippedStatName (with the same value as the existing CsvStatAverage element if it exists)
- Budget coloring is applied to existing CsvStatAverage elements.
- The budget for a given stat is assumed to be the first element of its colourThresholds. This value is displayed in the report
- A totalStatName attribute can be specified if a total stat already exists. If so, an "other" value will be output to the detailed summary table with the unaccounted value
- If the showTotal attribute is set to false (default: true), the total won't be shown in the detailed report

Other changes:
 - Always read all CSV stat averages, regardless of whether -readAllStats is specified. -readAllStats is only now used to determine whether to show CSV stat averages in a summary table

Example:
	<summary type="statBudgets" metricName="GTGameplay" title="Gamethread - Gameplay Budgets" hideStatPrefix="Exclusive/GameThread/" emitStatMetrics="1">
		<colourThresholdsTotal>3,4,5,6</colourThresholdsTotal>
		<colourThresholds stat="Exclusive/GameThread/Buildings">1,2,3,4</colourThresholds>
		<stats>Exclusive/GameThread/Buildings,Exclusive/GameThread/Camera,Exclusive/GameThread/Curie,Exclusive/GameThread/Network*,Exclusive/GameThread/PlayerController*,Exclusive/GameThread/WorldTickMisc,Exclusive/GameThread/FlushLatentActions,Exclusive/GameThread/Tickables,Exclusive/GameThread/SyncBodies,Exclusive/GameThread/CharPhys*,Exclusive/GameThread/Character*,Exclusive/GameThread/FortPawnTickSubsystem,Exclusive/GameThread/SignificanceManager,exclusive/gamethread/vehicle*,Exclusive/GameThread/AbilityTasks,Exclusive/GameThread/Actor*,Exclusive/GameThread/HandleRPC,Exclusive/GameThread/RepNotifies,Exclusive/GameThread/TickActors,Exclusive/GameThread/Pickups,Exclusive/GameThread/ProjectileMovement,Exclusive/GameThread/TimelineComponent,Exclusive/GameThread/TimerManager,Exclusive/GameThread/FortTrainManager</stats>
	</summary>
[FYI] andrew.ladenberger, michael.short

[CL 30329557 by ben woodhouse in ue5-main branch]
2023-12-14 15:20:48 -05:00
ben woodhouse
f860dd925d HistogramThresholds variables support + hook up to XML
[CL 30318527 by ben woodhouse in ue5-main branch]
2023-12-14 08:59:10 -05:00
ben woodhouse
4451ac584f PerfReportTool 4.225.0: Add support for inline graphs, so we can define graphs fully in a ReportType. This allows us to reference variables in the graph definition directly, e.g for declaring a stat string or setting a maxY which corresponds to the target FPS
[CL 30318261 by ben woodhouse in ue5-main branch]
2023-12-14 08:40:49 -05:00
ben woodhouse
52de449da0 PerfReportTool 4.224.1: Derived metadata populates variables
-add dumpVariablesAll param to dump all variables including metadata

[CL 30091707 by ben woodhouse in ue5-main branch]
2023-12-04 14:55:26 -05:00
ben woodhouse
2ea0faefb3 PerfReportTool 4.224.0: Adjust default colorization to make greens and reds lighter and more readable
- Add Variable support for hitch thresholds

[CL 30080549 by ben woodhouse in ue5-main branch]
2023-12-04 10:00:58 -05:00
ben woodhouse
9073333aa2 PerfReportTool 4.223.0. Budget and variable improvements
- Multiplier support for variables. Add multiplier="N" attribute to a variableset or variable
- FPSCharts : Compute frametime color thresholds automatically if MVP thresholds are specified and frametime is not
- Support empty color thresholds (useful if we want to clear via a variable)
- Add support for dumping the variables to the log for each CSV via -dumpVariables param

[CL 30060917 by ben woodhouse in ue5-main branch]
2023-12-01 19:11:26 -05:00
ben woodhouse
b12d868886 PerfReportTool 4.222.0 : support dereferencing variables with array indices for strings separated with commas. Also add validation for variable names.
[CL 29986252 by ben woodhouse in ue5-main branch]
2023-11-29 09:04:49 -05:00
ben woodhouse
1419a64864 Add Contains and Get methods for SummaryTableRowData
[CL 29984224 by ben woodhouse in ue5-main branch]
2023-11-29 06:52:20 -05:00
ben woodhouse
b365599507 PerfReportTool 4.221.0 : Add support for metadata queries and metadata variables (ie {$meta.NAME} ) in derived metadata mappings. This makes these declarations more powerful and reduces duplication
Metadata queries can also be blank if necessary if we want the values to always be set.
SourceName/DestName are still supported for back-compat if no query is provided
Note: There is no globalvariable support here. Solving this is not worth the complexity, performance hit and potential ordering and correctness implications
#tests Passes Test cases with identical results
[FYI] tyler.staples

[CL 29922595 by ben woodhouse in ue5-main branch]
2023-11-24 13:49:43 -05:00
ben woodhouse
72d3559c65 PerfReportTool 4.220: VariableSets support
- Add support for variable sets. This allows us to set blocks of variables based on metadata, which can be accessed via ${NAME} syntax. Variable sets support nesting and can be conditional using metadata queries
  - We support a global variable set (declared under <globalVariableSet> in root), and local variable sets which apply to a given report type only (as <variableSet> children of the ReportType element)

example:
<globalVariableSet>
  <variableSet>
    <var mvpStatName="MVP${meta.targetframerate}"/>
    <var targetFps="${meta.targetframerate}"/>
    <var dynamicResBudget="100"/>
  </variableSet>

  <!-- Switch -->
  <variableSet metadataQuery="platform=Switch">
    <var frameTimeBudget="33.33"/>
    <variableSet metadataQuery="deviceprofile=Switch_Console_Forward*">
      <var dynamicResBudget="92"/>
    </variableSet>
    <variableSet metadataQuery="deviceprofile=Switch_Handheld_Forward*">
      <var dynamicResBudget="88"/>
    </variableSet>
  </variableSet>
</globalVariableSet>

#tests Passes Test cases with identical results (if no changes to the XML)
[FYI] tyler.staples

[CL 29918333 by ben woodhouse in ue5-main branch]
2023-11-24 07:45:23 -05:00
ben woodhouse
146dc093bb PerfReportTool 4.210.1 : fix an exception when startTimestamp is not set for some rows
[CL 29915928 by ben woodhouse in ue5-main branch]
2023-11-23 22:04:05 -05:00
ben woodhouse
932a14ce02 PerfReportTool 4.210 - Variables part 1 : Add support for metadata references in ReportTypes XML. CSV Metadata references can now be specified Report xml attributes (and values in select cases) with ${meta.KEY} syntax, e.g offsetY="${meta.minimapoffsety}". Multiple variables can be matched in a single attribute if needed, eg offsetXY="${meta.minimapoffsetx},${meta.minimapoffsety}"
Support is provided for Summary classes via XElement extension helper methods, which now take an optional XmlVariableMappings param which handles the variable resolving. GetAttribute, GetSafeAttribute and GetValue support this.
Non metadata variables are also supported in theory e.g ${MyVariable}, but support for populating these does not exist yet
Various cleanup/refactoring and fixups of old code

#tests Passes Test cases with identical results (if no changes to the XML)
[FYI] tyler.staples

[CL 29912786 by ben woodhouse in ue5-main branch]
2023-11-23 14:06:40 -05:00
tyler staples
a256e0515b PerfReportTool - Fix incorrect base directory
Also removed debug directory handling for launching CSVToSVG in debug mode.

#rnx
#tests prt test cases, prs unit tests, local report generation
#rb ben.woodhouse

[CL 29875869 by tyler staples in ue5-main branch]
2023-11-21 17:34:46 -05:00
ben woodhouse
62e7c2821a PerfReportTool: Remove unnecessary baseOutputDir
[CL 29870089 by ben woodhouse in ue5-main branch]
2023-11-21 13:07:15 -05:00
ben woodhouse
bf257cb06f Upgrade CSV tools to .NET core 6. Includes various required fixes for decompression, json reading, graph component hash generation and exception handling. Performance is better than .Net Framework.
[CL 29839806 by ben woodhouse in ue5-main branch]
2023-11-20 08:04:34 -05:00
ben woodhouse
8d91b3258f PerfReportTool 4.108.0 + CsvToSvg: -maxAutoMaxY support for graphs + other fixes:
- Add maxAutoMaxY param to graphs and csvToSVG params which allows us to clamp the max automatic Y to a particular value. Also:
- Fix some naming clashes when there are mulltiple graphs on a page. This was preventing us from having graphs with different sizes in a perf report
- Add -embedGraphCommandline arg to help debugging
[FYI] tyler.staples

[CL 29745624 by ben woodhouse in ue5-main branch]
2023-11-15 09:55:24 -05:00
ben woodhouse
527126fd2c Rebuild PerfReportTool to fix an exception, and bump version to 4.107.2 (cs change was checked in but exe hadn't been rebuilt)
[CL 29189970 by ben woodhouse in ue5-main branch]
2023-10-27 14:09:15 -04:00