-
Notifications
You must be signed in to change notification settings - Fork 635
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
Do not aggregate node execution analytics anymore #11356
Conversation
Categories.Performance, | ||
e.Task.GetType().Name, | ||
executionTimeSpan, node.GetOriginalName()); | ||
} |
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.
@mmisol @aparajit-pratap Thank you for your input. I would like to take more time to think through how we track real changes to nodes executed.
From what I can tell, adding/deleting/undo moving/modifying a node will all trigger execution so even a node showing as popularly executed, it might be just users modify them regularly.. Like Code Block node
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.
Certain cases, undo/redo may trigger multiple runs..
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.
Also @mmisol I dont think I can only look for ModifiedNodes.count = 1 case because when upstream node modified, we usually make downstream nodes dirty as well in Dynamo. e.g. with the following example, if user touches CBN, the all three nodes will be in ModifiedNodes set during execution.. Maybe the ModifiedNodes
name itself is misleading..
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.
maybe a stupid question... doesn't this send n
http requests for each graph run? Doesn't that seem potentially slow with large graphs?
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.
@mjkkirschner ADPSDK will handle the requests with optimization on their end. From my dottrace profiling, this do not seem impact Dynamo performance that much. I have a screen shot of that in PR description using DotTrace. Also, since delta computation works, we are not always sending n requests for each run, but only the downstream subset of the graph.
I looked at this change with @aparajit-pratap together and found it works great without Tuneup view extension, I will try to do some profiling to estimate the performance impact. |
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.
LGTM
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.
Just a couple of questions on my end. Maybe my comment in #11355 was misunderstood because I didn't say I had concerns about performance.
Actions.Run, | ||
Categories.NodeOperations, | ||
node.GetOriginalName()); | ||
} |
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 see this is not a timed event anymore, which makes sense to me given we cannot separate the individual execution time for each node. Just checking if this was an intended change since it wasn't announced in the description @QilongTang
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.
Thanks,yes it is intended and let me update description
src/DynamoCore/Models/DynamoModel.cs
Outdated
foreach (var node in updateTask.ModifiedNodes) | ||
{ | ||
// Starting from Dynamo 2.11.0, tracking node execution as generic event so | ||
// it is distinguished with the previous aggregated performance event |
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.
Regarding this comment, I would abstain from including Starting from Dynamo 2.11.0,
. Since we are using git it's easy to traceback changes without having to add timestamps or version marks.
@mmisol Thanks for review, Addressed the comments, updated PR description and merging. |
* Do not aggregate node execution analytics anymore * Update to use new event combo * Update Comments
* Dock and Undock view extension with Dynamic extension ID as edge case (#11394) * Initial Commit with settings null check * Add unit test * Add view extension loading warning * Update message * Initial Commit (#11366) * Do not aggregate node execution analytics anymore (#11356) * Do not aggregate node execution analytics anymore * Update to use new event combo * Update Comments * Make IntegerSlider the only AKA for migration (#11360) There were two classes that were declaring an 'AlsoKnownAs' attribute for 'DSCoreNodesUI.Input.IntegerSlider' in 'CoreNodeModels.Input': 'IntegerSlider' and 'IntegerSlider64Bit'. While the latter obsoletes the former, it is not possible to migrate to it from XML, so only 'IntegerSlider' should continue declaring an 'AlsoKnownAs' attribute. Note that currently both classes are trying to be registered, which results in only one of them being registered but not really making any guarantees of which one it is. This also generates an exception catched internally but shown in the console. * Revised icons for AnyTrue and AnyFalse nodes (#11361) * Implement ToString for DS Dictionary (#11358) This is done to provide meaningful output when a dictionary is provided to nodes like 'String from Array' and 'String from Object'. These nodes call built-in DS functions that end up calling ToString on the dictionary, which until now used the default implementation inherited from Object which just returned the class name. Co-authored-by: Martin Misol Monzo <[email protected]> Co-authored-by: Laurence Elsdon <[email protected]>
Please Note:
DynamoRevit
repo will need to be cherry-picked into all the DynamoRevit Release branches that Dynamo supports. Contributors will be responsible for cherry-picking their reviewed commits to the other branches after aLGTM
label is added to the PR.Purpose
Example Graph
Previously, node execution analytics data was aggregated with comma, e.g.
This makes data much less straight forward on backend with all kinds of combos of modified nodes during execution.
After this PR, each executed node will be tracked individually and no longer using timed event. Here are the cases:
ModifiedNodes
only contains the new nodeModifiedNodes
only contains the downstream subgraphModifiedNodes
only contains the node moved and downstream subgraph. This is a bug tracked.ModifiedNodes
only contains the node modified and downstream subgraphIndividual node execution event will be tracked as
DYN.NodeOperations.Run
instead of the previous aggregatedDYN.Performance.UpdateGraphAsyncTask
. See related PR: https://git.autodesk.com/Dynamo/Analytics.NET/pull/26About performance impact, I used DotTrace by Jetbrains to profile with a file with ~760 nodes, I did file opening and some other actions above which would trigger rerun with a lot of nodes executed. The profiling results did not mark any hot spots on analytics call but marked Python node view customization as hot spots. Since the analytics call do not involve system I/O by default which matches my expectation, I think adding this loop should be safe. FYI: @mmisol
Declarations
Check these if you believe they are true
*.resx
filesReviewers
@DynamoDS/dynamo
FYIs
(FILL ME IN, Optional) Names of anyone else you wish to be notified of