-
Notifications
You must be signed in to change notification settings - Fork 14
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
Execution comparison #13
Execution comparison #13
Conversation
Can you make the build pass? |
I tried using it yesterday.
I have a use case that can use it. I can share the traces, but I cannot even get it to work at the moment! |
Hello Matthew,
Yes. I have new push eliminating that dependencies and adding some other
features. I will pull it today.
…On Wed, Apr 24, 2024 at 9:23 AM Matthew Khouzam ***@***.***> wrote:
I tried using it yesterday.
1. The code doesn't build on HEAD. This is because Arnaud deprecated
the incubator callstack
2. There is open tracing changes in the first patch, they should be a
separate patch
3. splitting the code into "first patch" "second patch" and "third
patch" is not descriptive enough. We need to have titles that describe what
they do.
I have a use case that can use it. I can share the traces, but I cannot
even get it to work at the moment!
—
Reply to this email directly, view it on GitHub
<#13 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AJIHYVI6Q6AFGNYQ5TIZQGTY66W35AVCNFSM6AAAAABE74PPIWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDANZUHE2DANZQGQ>
.
You are receiving this because you authored the thread.Message ID:
<eclipse-tracecompass-incubator/org.eclipse.tracecompass.
***@***.***>
|
dfb1b20
to
938a549
Compare
Just writing this comment to update the situation:
|
|
938a549
to
8cf63a9
Compare
please update commit messages, also thanks for fixing the pr! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Some first pass changes. you need to fix imports too. I am trying to get this working too!
Require-Bundle: org.eclipse.core.runtime, | ||
org.eclipse.core.resources, | ||
org.eclipse.tracecompass.common.core, | ||
org.eclipse.tracecompass.incubator.executioncomparision.core, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
remove
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
why should it be removed? It s needed in Activator class of test package.
private ITmfTimestamp fStartB = TmfTimestamp.BIG_BANG; | ||
private ITmfTimestamp fEndB = TmfTimestamp.BIG_CRUNCH; | ||
private String fStatistic = ""; //$NON-NLS-1$ | ||
private List<String> fTraceListA = new ArrayList<>(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
CopyOnWriteArrayList, it's a racy list. This is a temp fix.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
private ITmfTimestamp fEndB = TmfTimestamp.BIG_CRUNCH; | ||
private String fStatistic = ""; //$NON-NLS-1$ | ||
private List<String> fTraceListA = new ArrayList<>(); | ||
private List<String> fTraceListB = new ArrayList<>(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
same
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
WeightedTreeSet<ICallStackSymbol, Object> newTreeSet = new WeightedTreeSet<>(); | ||
String mainGroup = MERGE; | ||
|
||
for (String traceName : traceList) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this can be null, if tracelist is null, continue?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this can't be null. In initialization step ( private List fTraceListA = new ArrayList<>(); private List fTraceListB = new ArrayList<>();) traceLists are initialized as a empty list. And they will be filled by the signal handling before calling this function. However if it is null, the function returns an empty weightedTreeSet.
org.eclipse.tracecompass.incubator.analysis.core, | ||
org.eclipse.tracecompass.incubator.executioncomparision.core, | ||
org.eclipse.jdt.annotation;bundle-version="[2.0.0,3.0.0)";resolution:=optional, | ||
jakarta.validation.jakarta.validation-api, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
remove
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
org.eclipse.tracecompass.incubator.executioncomparision.core, | ||
org.eclipse.jdt.annotation;bundle-version="[2.0.0,3.0.0)";resolution:=optional, | ||
jakarta.validation.jakarta.validation-api, | ||
org.eclipse.tracecompass.analysis.profiling.core |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
put above annotations
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
@@ -192,7 +181,7 @@ public IWeightedTreeSet<ICallStackSymbol, Object, DifferentialWeightedTree<ICall | |||
* the monitor, can be null | |||
* @return the differential weighted provider or null | |||
*/ | |||
public @Nullable DifferentialWeightedTreeProvider<?> getDiffProvider(@Nullable IProgressMonitor monitor) { | |||
public @Nullable DifferentialWeightedTreeProvider<?> getDiffProvider(@Nullable IProgressMonitor monitor) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
revert
@@ -360,7 +368,16 @@ public void dispose() { | |||
*/ | |||
private void setDifferentialCallGraphProvider(DifferentialCallGraphProvider differentialCallGraphProvider) { | |||
fDifferentialCallGraphProvider = Objects.requireNonNull(differentialCallGraphProvider); | |||
|
|||
} | |||
private static ITmfTrace getTrace(String traceName) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this needs to be annotated nullable guess what, in github, nullable is a user that gets pinged!! @PatrickTasse
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I can't see why, its called in this loop: for (String traceName : traceList) { ITmfTrace trace = getTrace(traceName);} and it can not be null.
8cf63a9
to
2004b40
Compare
Hello! Are there screenshots or a video screen capture that could be used to give feedback on the result without needing to do the whole development setup? My understanding is that building it myself is currently the only way. |
org.eclipse.tracecompass.lttng2.ust.core, | ||
org.eclipse.tracecompass.analysis.os.linux.core, | ||
org.eclipse.tracecompass.analysis.profiling.core, | ||
org.eclipse.tracecompass.incubator.callstack.core, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This line should be removed.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
Bundle-ManifestVersion: 2 | ||
Bundle-Name: %Bundle-Name | ||
Bundle-Vendor: %Bundle-Vendor | ||
Bundle-SymbolicName: org.eclipse.tracecompass.incubator.executioncomparision.core;singleton:=true |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ideally, a refactor to rename this package to executioncomparison should be done.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
@@ -0,0 +1,90 @@ | |||
/******************************************************************************* | |||
* Copyright (c) 2023 École Polytechnique de Montréal |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
All of the copyrights may be updated to 2024
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is this file needed ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Removed
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This change should be removed from this PR and moved to another if needed.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This change should be removed from this PR and moved to another if needed.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
Reminder that it would be great to have some screenshots or a video capture showing the feature. It would allow folks who do not have the Trace Compass dev setup to review. |
Introduce a module to compare two groups of executions using a differential flame graph. An "EventDensityView" is used to select a time range for each group. Select the desired traces in an experiment. Showing the difference ratio based on self time (it required a modification to AggregatedCalledFunction). Introducing the "ParametricWeightedTreeUtils" to get "SelfTime" instead of "duration" while building the differential Trees. Isolating duplicating flame graph TODO: * add grouping strategies (WALL TIME) Not Valid: It was Discussed for Async Trace Comparison * move grouping to hamburger menu * add progress bar * instrument code (pretty good) * add tests * Make work with mainline (should be a simple ID swap) * Make a registry for tracetype->callstack ID * remove hard disk operations from UI thread (in progress) * Add way to select the entire trace easily: * Add way to manually select precise time range (import from main?) * query will be added Signed-off-by: Fariba Daneshgar <[email protected]> Signed-off-by: Matthew Khouzam <[email protected]>
Adding the option of textual input of dates and query to build the differential flame graph. Making work with mainline TODO: * move grouping to hamburger menu * add progress bar * instrument code (pretty good) * add tests * Make a registry for tracetype->callstack ID * remove hard disk operations from UI thread (in progress) * Add way to select the entire trace easily Signed-off-by: Fariba Daneshgar <[email protected]>
Differential flame graph view is updated to be able to show and hide Query part by demand. grouping are added to hamburger menu Dependencies to incubator for callstack and weighted tree packages are reslved changing in time ranges or in query reflect in graphical treeview and density charts Adding the reset Button to select entire trace (back to initial state) TODO * Add progress bar * instrument code(pretty good) * add test * make a registry for traceTYpe->callstack ID Signed-off-by: fariba <[email protected]>
changes required considering the changes in trace compass core( method getweigth(statistic type) from AggregatedCalledFunction is eliminated. mthode refreshMouseProver from Tmfxychartviewer ie eliminated) paramerticWeigthedTreeUtils is modified to use getSelfTime() and getweigth() instead of get weigth(Statistic type) ExecutionComparisonView and MultipleEventDensityViewer are changed to reflect time ranges selection in event density charts without using the method refreshMouseProvider(). Resolving Race condition Eliminating unnecessary dependencies and other issues Signed-off-by: fariba <[email protected]>
2004b40
to
bc713dd
Compare
Thank you for the screenshots and for your work on this analysis! 🌻 It's practical to be able to see the result visually in order to give feedback. Some elements I like:
SuggestionsI have some questions and comments about the visualisation. Clarify how to read the chartI noticed that there is a label of "GroupB-GroupA" next to the chart, but it's still not clear what data the chart contains. Some questions that came to mind were:
Suggestions
Clarify when this chart should be usedAt the moment it's unclear to me what kind of things it is appropriate to compare with this visualisation. I feel that answering the above questions (in the "Clarify how to read the chart" section) would improve this. Miscellaneous suggestionsI included screenshots annotated with my comments below. Some important themes:
|
Adding comments from an offline discussion. How to read the chart
Comments
|
This was merged! :) :) :) 👍 💯 |
execution comparison:
-Introduce a module to compare two groups of executions using a differential flame graph.
-An "EventDensityView" is used to select a time range for each group and Select the desired traces in an experiment.
-Showing the difference ratio based on self time required a modification to AggregatedCalledFunction.
-Introducing "ParametricWeightedTreeUtils" to get "SelfTime" instead of "duration" while building the differential Trees.
-Adding the option of textual input of dates and query to build the differential flame graph.
-moving grouping to hamburger menu
-Differential flame graph view is updated to be able to show and hide Query part by demand.
remove commented code: Done
improve commit messages, no "second commit" and "third commit":Done
fix dependencies:Done
update aggregatecallsite to have functions like getWeight(string). This doesn't compile locally:Done
Dependencies to the incubator callstack still exist and need to be removed: Done
Modifications to the incubator callstack need to be moved to trace compass core profiling plugin.:Done