-
Notifications
You must be signed in to change notification settings - Fork 255
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
Make static graph restore the default experience. #9803
Comments
One potential issue is that static graph evaluation based restore doesn't call any of the older targets like Telemetry would help us greatly here to know how many people are doing this. We might even be able to add a warning in a future release telling people that the targets are going away. |
That's a great point. Think advertising the existence of the feature more broadly before making it a default is a good idea. 1ES repos will probably catch a large majority of the scenarios, but you can never have too many dogfooders :) |
We are spinning up automation to make it the default for all 1ES customers by sending PRs to their repos. I'll update this issue with the problems we have getting people to adopt it. |
What's the trigger, criteria before we make this default? |
The plan is to make it default in the next major release given that it's a big change. The main criteria is correctness. We need static graph to not regress current functional scenarios. Perf gains are something we'll look into (we have) as well, but numbers there have been overwhelmingly positive for large project counts, and on par for lesser project counts. |
Note for other readers. Static graph is pretty safe to use. |
FWIW you may break others who have custom Project Types wherein static graph does not work, I have filed a bug report at #10019 |
@aolszowka The dup of the issue you linked in tracked here. |
Oh @jeffkl is already on it! |
I have updated the issue body calling out the way to test for the equivalence of these 2 experiences. If you see a problem, do let us know by filling an issue. |
What was the status on dog-fooding this? I can't believe we're this unique to have two issues found by just us #10307 |
I've made some performance measurements, locally and under GitHub Actions (Ubuntu and Windows) with our Lombiq's Open-Source Orchard Core Extensions solution. This, since it uses Orchard Core, has hundreds of package dependencies with transitive ones included. You can find my results here. I've seen some nice 8-15% speedups locally during Could you check it out, please? It seems that turning this on doesn't help in the GHA case all in all. Though the margins we're talking about here are really small, so probably doing more measurements would turn the end result somewhat. |
@Piedone thanks for the detailed performance measurements. During a full restore, I would not necessarily expect static graph-based restore to be too much faster. The main optimization that static graph-based restore uses is an out-of-proc system for evaluating all of the MSBuild projects which uses some special feature flags to improve performance as well as server GC. Once the projects have been evaluated, the same code runs to execute restore for both "regular" and static graph-based restore. The more projects a repository has, the more I would expect static graph-based restore to speed things up. And of course no-op restores benefit the most since evaluating all of the MSBuild projects is the long pole and no packages are pulled and unzipped. For example, we have an internal repo with 750 projects where a full no-op restore used to take 35 seconds but now takes only 7 seconds. We also have a repository with 5,000 projects that would basically time out when restoring but now can restore in a few minutes. We'll continue to improve restore performance in both scenarios and see if we can ever make static graph-based restore the default. But for now it will remain opt-in based on each individual repositories needs. |
I see, thanks for the explanation! |
Issue is missing Type label, remember to add a Type label |
Just in case, linking dotnet/msbuild#8326 |
This is an epic tracking all things relevant to static graph restore and whether there are any blockers/concerns to making it the default.
For readers, you'll need Zenhub to see the linked issues.
Currently this contains all potential issues tagged as static graph.
This doesn't mean they all need to be fixed, just analyzed :)
Note
For customers moving to static graph
When you run this, at the end of the second restore you should see something like:
All projects are up-to-date for restore.
The text was updated successfully, but these errors were encountered: