Add performance validations to language server extended services #33151
Labels
Area/Performance
Performance related issues.
IceBox
Older issues that are not being actively worked on but may be revisited in the future.
Team/LanguageServer
Language Server Implementation related issues. #Compiler
Type/Task
Description:
With more and more extended language server services getting introduced to the language server, number of requests served by LS at a given time increases. As of now, when a user makes a change to a document, apart from usual completion/codeaction requests, several other requests come from the vscode side. Examples are the diagram overview, executor positions and package components requests can be considered.
Since some of these requests rely on compilation, vscode may become unresponsive (latency in diagnostic publishing, etc) when the source code becomes larger. In LS, we have introduced the cancellation support to address this. Since no similar mechanism is available for extended services yet, irrelevant requests may take up CPU while the source code has moved on from that state.
To identify this kind of behavior, a mechanism is required to identify performance deviations.
Describe your task(s)
Suggestion is to implement a special type of performance tests with the following steps.
Perform the above steps several times to eliminate outliers and get the average response times. Then, compare for the time difference in those two operations. Check if the extended service has affected the core LS features (completions in this case). We can see if the response time has increased than a given percentage.
In summary, we take the LS only scenario as the baseline and compare the same while being interfered by extended services. We should propose a test framework (an abstract class may be) which can be extended by extended services and add their own tests.
The text was updated successfully, but these errors were encountered: