Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Prototype - Python frames #268

Draft
wants to merge 9 commits into
base: main
Choose a base branch
from
Draft

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
Collaborator

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.

3 participants