Skip to content

Conversation

@r1viollet
Copy link
Collaborator

@r1viollet r1viollet commented May 22, 2023

What does this PR do?

Prototype using libaustin to include information on python frames.
This uses vm_reads so requires ptrace capabilities.

The method to lookup frames is really experimental:

  • We basically look for a register that makes sense

Limitations

The build parts are not sorted out yet

  • This does not build on musl (due to libaustin not building on alpine afaik)
  • The .a from libaustin is not propagated correctly. I manually built it and copied it on ubuntu 20 for agent investigations from the libaustin branch.

The synchronisation is not perfect.
By the time we get the event, python may have done a lot of things (frames can get reused). This gives us messy frames (they do not aggregate well).

This takes some amount of CPU. We need to perform a lookup quite often.

Licensing

This is probably the most complex topici.

@sanchda
Copy link
Contributor

sanchda commented May 23, 2023

Oh wow, just saw this--really cool 8)

@r1viollet r1viollet force-pushed the r1viollet/python_frames_v2 branch from e8b6cce to f4b4821 Compare June 9, 2023 09:59
P403n1x87 and others added 7 commits September 1, 2023 14:54
Fix the build time dependency to read internal python frames from register state
Adjust the logics to cache python frames
I added a minor cache on the registers that yield valid results.
- Avoid ending profiling when non utf8 strings are found
- Other fixups to investigate libaustin issue
@r1viollet r1viollet force-pushed the r1viollet/python_frames_v2 branch from f8d102f to 383e076 Compare September 1, 2023 12:55
@r1viollet r1viollet force-pushed the r1viollet/python_frames_v2 branch from b294a1b to 156abae Compare September 1, 2023 16:08
Adjust the log to be more comprehensive
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