-
Notifications
You must be signed in to change notification settings - Fork 5
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
PID mode not working with Erlang beam #294
Comments
It might be a bit of a similar case. We run Julia and we are using the global profiling option on the node (since the we have hit another bug in the pid code (#283). In the global mode the frames from the jitted functions are either missing or they appear as anonymous. You can check the last comments on #276 |
I wasn't not sure whether the issue I was seeing was the same, because in my case no data at all shows up, where in the other issues it looks like at least something shows up.
For not entirely rational reasons, PID mode would be required for me to convince people to try this out, as then there is no "scary wrapper" required (and requires no modification of the existing methods to deploy services). |
The bug is that we only follow the initial TID. If it happens that nothing happens in that given TID, we won't be showing anything. Erlang might not be easy to visualize through call stacks. With the working wrapper command, were the graphs helpful ? Was the activity understandable ? |
I only ran a simple web server through it, but I would say they were reasonably understandable. Here is a screenshot of a profile: Due to how Erlang processes work profiling might not be as easy to work with as some other languages, but Over at parca-dev/parca-agent#145 (comment) someone has been able to get application function calls as well. |
Thanks for the screen shot. The risk I see is that a lot of activity will relate to the framework and not the user activity, like scheduling logics (example: epoll and sched_yield stacks). Tracing might have a more intuitive approach. Could I trouble you to push the simple web server to a public repo (in a docker?) so I can run it on my side and check how / where the perf maps are published? |
The Parca Dockerfile from their example should work I think, if not let me know and I will create something. You are right that the trace above shows a lot of epoll etc. However I also found https://blog.rabbitmq.com/posts/2022/05/flame-graphs/ which shows that you can get a graph of the application code with |
For wholehost: the fix is to retrieve the namespaced PID and to look for the perf map with the correct name. |
I am using Elixir. I have
export ERL_FLAGS="+JPperf map"
and a perf map file is present in/tmp
The following works:
but starting
iex
separately, and runningdoes not.
I'm unsure if this is the same issue as the other PID related issues, as in this case nothing shows up at all.
The text was updated successfully, but these errors were encountered: