Skip to content

Conversation

@thooot
Copy link
Contributor

@thooot thooot commented Aug 21, 2025

This improves parsing support for more complex perf traces including ones where:

  • some events have stacks and some do not (results in events on subsequent lines without a blank line between)
  • some events have per-event modifiers (e.g. cpu-clock/freq=999/,block:block_rq_issue/call-graph=no/), in this case some linux distros will output the /modifier/ in the perf text trace

It also adds support for the following event types:

  • sched:sched_process_exec
  • block:block_rq_issue
  • block:block_rq_complete
  • sched:sched_wakeup
  • irq:irq_handler_entry
  • irq:irq_handler_exit

Copy link
Member

@brianrob brianrob left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@thooot, thank you very much. This looks great.

exit = ReadExit(source);
source.SkipUpTo('\n');
ScheduleSwitch schedSwitch = ReadScheduleSwitch(source);
IEnumerable<Frame> frames = ReadFramesForSample(processCommand, pid, tid, threadTimeFrame, source);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No need to change in this PR - I think we should consider if there is a nice pattern we can employ here to ensure that the call to read the stack happens automatically for all event types.

@brianrob
Copy link
Member

/azp run

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@brianrob brianrob merged commit db63c41 into microsoft:main Aug 21, 2025
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants