Comments (11)
Simple case with flow IDs set
sequence_test.proto.zip
from perfetto.
Hey @lednakashim,
Thanks for raising the bug, I can see the issue.
I can imagine two ways to address this:
- Detect the parent child relationship and draw a different style of arrow (i.e. a vertical arrow).
- Try to prevent arrows from going backwards as much as possible by sliding the ends forward or backward while keeping them within the bounds of their slices.
While the former would need some investiagtaion, the latter would be quite trivial and I think would acheive the desired effect - something like in the screenshot.
Let me know what you think.
from perfetto.
Preference for down arrow as the parent span is ran "simultaneously" with the child span.
The second version (what is drawn) is a bit ambiguous as it is not clear what the arrow start is used to denote. Control flow switches from the parent to the child at edge rather than some time before the edge.
Realistically either solutions work
from perfetto.
The second version (what is drawn) is a bit ambiguous as it is not clear what the arrow start is used to denote.
Agreed. The difficulty is, the arrow has to begin somewhere, and unless it's at one of the ends of the slice I think it could be misinterpreted as significant.
Ideally the tool would connect parents to children via a down arrow
Could you sketch out what you had in mind re "down arrow"?
A few suggestions:
Name | Screenshot |
---|---|
No circle | |
Align start with destination slice | |
Start down | |
Straight down | |
Aligned start with start of source slice | |
Reversed (makes more sense when zoomed out) |
from perfetto.
Wow, these are neat:
I was initially thinking that a connection from the center make sense but one of the variants you have is more elegant
Perhaps
Aligned start with start of source slice
because the meaning of the arrow control points are clear and they doesn't duplicate the meaning of the edge
from perfetto.
For fun here is another synthetic sequence typical of pipelined producer-consumer queues
sequence_test.proto.zip
from perfetto.
Thanks for the example trace :)
OK here's my latest thinking. You can try the result out here - just make sure to enable the "Neater Flow Arrows" flag.
Let me know what you think.
Edit: Fixed URL.
from perfetto.
Actually I think having arrows emenating from the left of the parent slice when there isn't much room makes a bit more sense - Link
from perfetto.
Actually I think having arrows emenating from the left of the parent slice when there isn't much room makes a bit more sense - Link
I've been using this branch for few weeks and it seams to help a lot. You guys going to merge it?
from perfetto.
there is an adjacent issue where the time calculation of nested flow seems to be always nailed to 0 which is maybe additionally worth filing
from perfetto.
Hey sorry for the delay, I haven't had a lot of time to work on this recently.
We just landed a patch (on autopush channel) which does a much better job of working out slice ancestors under the hood and draws arrows from the start of the parent slice which looks like this:
If this is enough, please close the issue. Otherwise I'll rebase my changes on top of this CL and try and get some opinions from the team.
there is an adjacent issue where the time calculation of nested flow seems to be always nailed to 0 which is maybe additionally worth filing
Can you expand on this a little, maybe attach a screenshot?
from perfetto.
Related Issues (20)
- Setting to collapse the thread name column
- [UI] Minor UX regression with Tabs V2 HOT 3
- Race condition trying to load new content into Perfetto HOT 10
- Perfetto can load gz files but not zip. HOT 1
- When the same id is used in the Flow EVENT, it is drawn strangely. HOT 1
- sdk example_custom_data_source does not load HOT 10
- Invalid URL HOT 1
- How to get system begin time of a trace slice HOT 4
- Certain tables dont get populated with data HOT 1
- Is it possible to show all dependencies at once? HOT 1
- The priority of the same thread suddenly changes in a trace. HOT 7
- UI enhancement: Exclude non-returning syscalls like sys_rt_sigreturn from processing to prevent endless slices HOT 11
- cpu_profiler.py uses tempfile before closing it on window 10 problems HOT 1
- A timestamp display issue of perfetto HOT 8
- Cannot open the settings page HOT 2
- How to lock the range of Perfetto timeline HOT 6
- Problem with parsing 64bits tid fields in JSON captures HOT 3
- How to merge same methods in Web UI? HOT 1
- Cant find any data from android.dvfs and android.battery in moto g40 fusion(anddroid 12) HOT 2
- Error "col: 'name': SQL value is NULL but that was not expected" HOT 7
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from perfetto.