Skip to content
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

"Perform editor feature analysis in external process" should likely be turned on by default. #26076

Closed
CyrusNajmabadi opened this issue Apr 10, 2018 · 10 comments
Assignees
Labels
Area-IDE Question Resolution-Fixed The bug has been fixed and/or the requested behavior has been implemented
Milestone

Comments

@CyrusNajmabadi
Copy link
Member

CyrusNajmabadi commented Apr 10, 2018

this is in reference to this feature:

image

This feature was A/B tested probably around a year ago at this point. @kuhlenh has the details. All data was extremely good. It showed substantial improvements in some areas, and no regressions anywhere.

I think this can become non-"experimental" at this point and can just become the default.

@CyrusNajmabadi
Copy link
Member Author

tagging @dotnet/roslyn-ide @kuhlenh @jinujoseph

Any reason not to do this at this point? The A/B test helped address any concerns we had about potential instability or possible negative perf impact.

@jcouv jcouv added the Area-IDE label Apr 15, 2018
@jinujoseph jinujoseph added this to the Unknown milestone Apr 15, 2018
@rollsch
Copy link

rollsch commented May 27, 2018

Can I get some more information on what this does and how it improves performance?

@CyrusNajmabadi
Copy link
Member Author

tagging @dotnet/roslyn-ide @kuhlenh @jinujoseph

Any reason not to do this at this point? The A/B test helped address any concerns we had about potential instability or possible negative perf impact.

@CyrusNajmabadi
Copy link
Member Author

@rolandh

Can I get some more information on what this does and how it improves performance?

The feature works by making 'global' IDE operations run in a separate process. These include operations like:

  1. Find all references.
  2. Navigate to.
  3. Add using.
  4. Rename

Basically, features that need knowledge of all the semantic information in your solution. By moving these operations into a separate process it greatly reduces load inside VS. Specifically, many of these feature are quite expensive to perform, both in CPU and in terms of memory allocations. The latter is a particularly large problem as it bogs down the single GC system inside VS. So, if you're doing these features in VS, with a large solution, you can often get slowdowns and latency spikes as the GC has to pause things to deal with the enormous pressure. By moving out of proc the VS GC no longer has to worry about that, and things like latency spikes drop by quite a bit.

@jinujoseph jinujoseph self-assigned this Aug 23, 2018
@jinujoseph jinujoseph modified the milestones: Unknown, 16.0.1 Aug 23, 2018
@jinujoseph jinujoseph modified the milestones: 16.0.P1, 16.0.P2 Oct 29, 2018
@jinujoseph jinujoseph modified the milestones: 16.0.P2, 16.1.P1 Jan 18, 2019
@sharwell sharwell added the Resolution-Fixed The bug has been fixed and/or the requested behavior has been implemented label Mar 1, 2019
@Brain2000
Copy link

Brain2000 commented Sep 3, 2019

Looks like someone forgot to turn this on. Could it have anything to do with this: https://developercommunity.visualstudio.com/content/problem/532880/live-code-analysis-slow.html

I also find it amazing that the Live Analysis continues to run even after closing all solutions.

@CyrusNajmabadi
Copy link
Member Author

These are unrelated features. The issue i opened was about movin certain features (like find-references/rename/navigate-to/etc.) out of process. Live Analysis is not included in that bucket. If you are running into problems there please open another bug. This was has been closed appropriately and no further work will be done here based on reports about other features. Thanks!

@Brain2000
Copy link

@CyrusNajmabadi The screenshot displayed above has "Perform editor feature analysis in external process". I ask because this option is no longer available, and now devenv.exe consumes multiple cores worth of processing. The freezing has become so bad in version 16.2 that I ended up having to to isolate and suspend the thread in devenv.exe running the analysis, just so I could work.

@CyrusNajmabadi
Copy link
Member Author

@Brain2000 As i mentioned, the above option was solely for a subset of features that i created. All those features now run out of proc and do not have an impact on the CPU usage of VS. The option is no longer available because those features are now never in VS anymore.

and now devenv.exe consumes multiple cores worth of processing.

This is unrelated to the features i wrote or this specific issue. I would recommend filing performance bugs against VS.

The freezing has become so bad in version 16.2 that I ended up having to to isolate and suspend the thread in devenv.exe running the analysis, just so I could work.

As i mentioned above, please file another issue on this. The option this issue refers to never ahd any impact on things like 'live analysis'.

@jmarolf
Copy link
Contributor

jmarolf commented Sep 4, 2019

@Brain2000 I would really appreciate it if you could follow the directions here and record a trace of the problem you are seeing.

@sharwell
Copy link
Member

sharwell commented Sep 4, 2019

@mavasani this looks like another instance of the runaway dispose analyzer issue

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Area-IDE Question Resolution-Fixed The bug has been fixed and/or the requested behavior has been implemented
Projects
None yet
Development

No branches or pull requests

8 participants