Commit Graph

218 Commits

Author SHA1 Message Date
martin ridgers
a48ced4fb5 Set serial to "ignored" for aux data and terminal events.
#rb jb
#rnx
#preflight 6151a7ff59c66a000102f381

#ROBOMERGE-AUTHOR: martin.ridgers
#ROBOMERGE-SOURCE: CL 17629172 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v871-17566257)

[CL 17629174 by martin ridgers in ue5-release-engine-test branch]
2021-09-27 08:02:18 -04:00
Martin Ridgers
b4130ddc29 Set serial to "ignored" for aux data and terminal events.
#rb jb
#rnx
#preflight 6151a7ff59c66a000102f381

[CL 17629172 by Martin Ridgers in ue5-main branch]
2021-09-27 08:02:04 -04:00
martin ridgers
96027838ef Added an alignment to hint to the compiler to do the right thing.
#rb jb
#rnx
#preflight 6151a7ff59c66a000102f381

#ROBOMERGE-AUTHOR: martin.ridgers
#ROBOMERGE-SOURCE: CL 17629153 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v871-17566257)

[CL 17629162 by martin ridgers in ue5-release-engine-test branch]
2021-09-27 08:00:26 -04:00
Martin Ridgers
3d9152c8b3 Added an alignment to hint to the compiler to do the right thing.
#rb jb
#rnx
#preflight 6151a7ff59c66a000102f381

[CL 17629153 by Martin Ridgers in ue5-main branch]
2021-09-27 07:59:57 -04:00
martin ridgers
657f070eac Consume unsynchronised events before sorting so it is only ever serial numbers that define the heap.
#rb jb
#jira ue-127376
#rnx
#preflight 6151a7ff59c66a000102f381

#ROBOMERGE-AUTHOR: martin.ridgers
#ROBOMERGE-SOURCE: CL 17629136 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v871-17566257)

[CL 17629141 by martin ridgers in ue5-release-engine-test branch]
2021-09-27 07:59:27 -04:00
Martin Ridgers
b6b67f90af Consume unsynchronised events before sorting so it is only ever serial numbers that define the heap.
#rb jb
#jira ue-127376
#rnx
#preflight 6151a7ff59c66a000102f381

[CL 17629136 by Martin Ridgers in ue5-main branch]
2021-09-27 07:58:46 -04:00
ionut matasaru
dfa47a98d8 [Insights] Fixed the processing of scoped timing events with 0 duration.
Description of the problem: Very short scopes for cpu timing events with metadata can have a duration of 0. In this case the enter/leave events are incorrectly processed. The "enter" scope event is processed as it has a relative timestamp > 0, but the "leave" event is ignored in analysis as it will have a timestamp == 0, some as scoped events without time. It results in a broken hierarchy of cpu timing events!

The fix ensures the scoped events with 0 duration will still have a valid timestamp (in this case the "leave" event will have same timestamp as "enter" event, as expected), so those "leave scope" events are not ignored anymore by the cpu profiler analyzer (which still needs to ignore scoped events without time).

#rb Martin.Ridgers
[FYI] Catalin.Dragoiu

#ROBOMERGE-AUTHOR: ionut.matasaru
#ROBOMERGE-SOURCE: CL 17627582 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v871-17566257)

[CL 17627584 by ionut matasaru in ue5-release-engine-test branch]
2021-09-27 02:06:19 -04:00
ionut matasaru
dc3b57ac69 [Insights] Fixed the processing of scoped timing events with 0 duration.
Description of the problem: Very short scopes for cpu timing events with metadata can have a duration of 0. In this case the enter/leave events are incorrectly processed. The "enter" scope event is processed as it has a relative timestamp > 0, but the "leave" event is ignored in analysis as it will have a timestamp == 0, some as scoped events without time. It results in a broken hierarchy of cpu timing events!

The fix ensures the scoped events with 0 duration will still have a valid timestamp (in this case the "leave" event will have same timestamp as "enter" event, as expected), so those "leave scope" events are not ignored anymore by the cpu profiler analyzer (which still needs to ignore scoped events without time).

#rb Martin.Ridgers
#fyi Catalin.Dragoiu

[CL 17627582 by ionut matasaru in ue5-main branch]
2021-09-27 02:03:31 -04:00
ionut matasaru
0b79759b8d Fixed dispatch of events with auxiliary data for the new protocol version (5).
Added bounds checking when reading (skipping) the metadata in front of trace file.

#rb Martin.Ridgers
#preflight 6139be0c48e4950001410cad

#ROBOMERGE-AUTHOR: ionut.matasaru
#ROBOMERGE-SOURCE: CL 17469346 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v870-17433530)

[CL 17469379 by ionut matasaru in ue5-release-engine-test branch]
2021-09-09 05:03:58 -04:00
ionut matasaru
619e6f4d4a Fixed dispatch of events with auxiliary data for the new protocol version (5).
Added bounds checking when reading (skipping) the metadata in front of trace file.

#rb Martin.Ridgers
#preflight 6139be0c48e4950001410cad

[CL 17469346 by ionut matasaru in ue5-main branch]
2021-09-09 05:01:09 -04:00
martin ridgers
7efe89bacc Explicitly terminate runs of aux data blocks with a well-known "aux data terminal" event. Previously a null byte was used. Each aux data block would write the null. Subsequent blocks would overwrite the prior block's null, effectively pushing the null to the end of a run aux data. However, if a different event was traced in the middle of the run it too would overwrite the null and corrupt the stream. With an explicit terminal event, structure can be recovered regardless of any multiplexing.
Serial numbers are no longer perscriptive (i.e. there can be gaps).

Normal trace events' headers are 50% smaller.

#jira ue-114532
#rb johan.berg
#preflight 6131df894f2c7c00016bf83c

#ROBOMERGE-SOURCE: CL 17419538 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v865-17346139)

[CL 17419569 by martin ridgers in ue5-release-engine-test branch]
2021-09-03 08:34:16 -04:00
Martin Ridgers
ac70c1cfc8 Explicitly terminate runs of aux data blocks with a well-known "aux data terminal" event. Previously a null byte was used. Each aux data block would write the null. Subsequent blocks would overwrite the prior block's null, effectively pushing the null to the end of a run aux data. However, if a different event was traced in the middle of the run it too would overwrite the null and corrupt the stream. With an explicit terminal event, structure can be recovered regardless of any multiplexing.
Serial numbers are no longer perscriptive (i.e. there can be gaps).

Normal trace events' headers are 50% smaller.

#jira ue-114532
#rb johan.berg
#preflight 6131df894f2c7c00016bf83c

[CL 17419538 by Martin Ridgers in ue5-main branch]
2021-09-03 08:32:31 -04:00
martin ridgers
011e395cb7 Signed/unsigned mismatch
#rb jb
#rnx

#ROBOMERGE-SOURCE: CL 17417943 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v865-17346139)

[CL 17417944 by martin ridgers in ue5-release-engine-test branch]
2021-09-03 04:35:12 -04:00
Martin Ridgers
f8e174443c Signed/unsigned mismatch
#rb jb
#rnx

[CL 17417943 by Martin Ridgers in ue5-main branch]
2021-09-03 04:35:00 -04:00
martin ridgers
3e5bac29cb Added an IsUidValid() method.
#rb jb
#rnx

#ROBOMERGE-SOURCE: CL 17417897 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v865-17346139)

[CL 17417903 by martin ridgers in ue5-release-engine-test branch]
2021-09-03 04:31:56 -04:00
Martin Ridgers
c639006b71 Added an IsUidValid() method.
#rb jb
#rnx

[CL 17417897 by Martin Ridgers in ue5-main branch]
2021-09-03 04:31:47 -04:00
martin ridgers
5cd24a6633 Changed the aux-data collector to use a modestly sized inline allocator.
#rb jb
#rnx

#ROBOMERGE-SOURCE: CL 17417870 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v865-17346139)

[CL 17417875 by martin ridgers in ue5-release-engine-test branch]
2021-09-03 04:30:45 -04:00
Martin Ridgers
a82b8cba0a Changed the aux-data collector to use a modestly sized inline allocator.
#rb jb
#rnx

[CL 17417870 by Martin Ridgers in ue5-main branch]
2021-09-03 04:30:35 -04:00
martin ridgers
7fa2ad9332 Gaps can occur in event serial numbering when late connect happens because tail-tracing discards packets. When that happens, analysis stalls waiting for a serial number that never occurs. This case is detected by seeing what serial analysis is waiting for and if it is the same after some inertia, decide analysis was stuck. The previous inertia length was too small. Now it is bigger. Sorting of the rota also takes into account the wrap.
#jira ue-123734
#rb johan.berg
#rnx
#preflight 612f88324f89cc00011cfda8

#ROBOMERGE-SOURCE: CL 17397817 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v865-17346139)

[CL 17397823 by martin ridgers in ue5-release-engine-test branch]
2021-09-02 00:21:04 -04:00
Martin Ridgers
0eec3c0ac6 Gaps can occur in event serial numbering when late connect happens because tail-tracing discards packets. When that happens, analysis stalls waiting for a serial number that never occurs. This case is detected by seeing what serial analysis is waiting for and if it is the same after some inertia, decide analysis was stuck. The previous inertia length was too small. Now it is bigger. Sorting of the rota also takes into account the wrap.
#jira ue-123734
#rb johan.berg
#rnx
#preflight 612f88324f89cc00011cfda8

[CL 17397817 by Martin Ridgers in ue5-main branch]
2021-09-02 00:19:42 -04:00
martin ridgers
1150e2234f Tail-tracing (a ring-buffer of previously traced events) has resulted in holes in the serial numbering used to reconstruct event order when analyzing a trace stream. Previously the serials were always consecutive, but now that tail-tracing drops older packets of events, serial number holes can appear. To mitigate that, if the same serial number is still queued in the analysis rota after two updates, a hole is assumed and the expected serial number is adjusted.
#preflight 611e3f7e76f1fd000167ab62
#preflight 611e3f7e76f1fd000167ab62

#ROBOMERGE-SOURCE: CL 17231879 via CL 17231894
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v855-17104924)

[CL 17231908 by martin ridgers in ue5-release-engine-test branch]
2021-08-19 08:09:06 -04:00
martin ridgers
9641c74f10 Tail-tracing (a ring-buffer of previously traced events) has resulted in holes in the serial numbering used to reconstruct event order when analyzing a trace stream. Previously the serials were always consecutive, but now that tail-tracing drops older packets of events, serial number holes can appear. To mitigate that, if the same serial number is still queued in the analysis rota after two updates, a hole is assumed and the expected serial number is adjusted.
#preflight 611e3f7e76f1fd000167ab62
#preflight 611e3f7e76f1fd000167ab62


#ROBOMERGE-SOURCE: CL 17231879
#ROBOMERGE-BOT: (v855-17104924)

[CL 17231894 by martin ridgers in ue5-main branch]
2021-08-19 08:08:40 -04:00
martin ridgers
213492af4d Scoped trace events were firing their leave events to analyzers with an invalid thread info pointer.
#ROBOMERGE-SOURCE: CL 17098027 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v853-17066230)

[CL 17098029 by martin ridgers in ue5-release-engine-test branch]
2021-08-08 17:20:28 -04:00
Martin Ridgers
668d426781 Scoped trace events were firing their leave events to analyzers with an invalid thread info pointer.
[CL 17098027 by Martin Ridgers in ue5-main branch]
2021-08-08 17:19:29 -04:00
martin ridgers
f4b7ad1ba0 Undid prior submit as it was a little misguided.
#ROBOMERGE-SOURCE: CL 17082705 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v853-17066230)

[CL 17082718 by martin ridgers in ue5-release-engine-test branch]
2021-08-06 09:57:23 -04:00