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

Faster workspace startup experience #14879

Open
8 of 10 tasks
slemeur opened this issue Oct 14, 2019 · 7 comments
Open
8 of 10 tasks

Faster workspace startup experience #14879

slemeur opened this issue Oct 14, 2019 · 7 comments
Labels
kind/epic A long-lived, PM-driven feature request. Must include a checklist of items that must be completed. lifecycle/frozen Indicates that an issue or PR should not be auto-closed due to staleness. roadmap/1-year Epics that are planned to complete in the short term (12 months or more)

Comments

@slemeur
Copy link
Contributor

slemeur commented Oct 14, 2019

Goal

One of the most important value prop of Eclipse Che is the disposable and on-demand aspect of the developer workspaces, which shift the development paradigm. It is also key in the adoption of tools, developer love when it is fast.

Problem
With the introduction of Che 7 based workspaces, the loading time of the workspaces has been growing significantly. A workspace is going to pull more containers and the load of the binaries of the extensions is also going to impact the loading performance.

Prioritized components load / minimal pull of images and components / lazy loading

When a user is starting a workspace, the workspace should start a very small subset of containers. For example only the Editor part. Then, VS Code Extensions, are downloaded in the background as well as all the specific runtimes. When the tooling is ready, the workspace is updated and a rollout upgrade of the Editor (Che-Theia) is used.
Che-Theia has now the whole tooling ready and user is notified. It can be an incremental upgrade of the editor (like every 5s for every plug-in being ready, for every plug-in ready, etc).

Optimized broker / init containers

The plugin broker shouldn’t download the VS Code extension vsix at each workspace start. We could include the extension in the runtime image built offline. Then restarting a workspace or starting a workspace with the same VS Code extensions than a previous user will reuse container images.

Cache of images and components

When an image, a plugin’s binary, a component has been pulled that should be cached and available to all the users.

List of Subtasks

@slemeur slemeur added the kind/epic A long-lived, PM-driven feature request. Must include a checklist of items that must be completed. label Oct 14, 2019
@che-bot che-bot added the status/need-triage An issue that needs to be prioritized by the curator responsible for the triage. See https://github. label Oct 14, 2019
@ibuziuk ibuziuk removed the status/need-triage An issue that needs to be prioritized by the curator responsible for the triage. See https://github. label Oct 14, 2019
@ibuziuk ibuziuk added this to the Backlog - Epics milestone Oct 14, 2019
@amisevsk
Copy link
Contributor

Added a subtask that has an existing issue.

@slemeur I'm not clear on what the last topic entails:

  • Images are available to all users by default (since they're stored in the internal image repo on the cluster; however this is on a node-by-node basis.
  • Would offline support for the plugin registry solve the plugin's binary component? Currently it's possible to build a plugin registry that has all extensions to be downloaded served locally. If so, there's a few tasks left on this: [plugin registry] Do not reference marketplace.visualstudio.com in plugin registry meta.yaml #14573 (comment) (could be a subtask attached to this epic)
  • The offline registry above also impacts the first point (lazy start of components), since the offline registry enables Che to pull in plugin artifacts very quickly in many cases.

Regarding the first point, I think more investigation would be necessary; in my experience, the starting of the containers isn't the biggest problem, it's pulling images and waiting for Theia to be responsive. Integrating a rollout into the start process may wipe out much of the time saved if Theia has to restart.

@frank-dspeed
Copy link

frank-dspeed commented Oct 16, 2019

I don't expirence any issues on a real cluster. with a dedicated docker registry proxy and a vscode extensions proxy local to the cluster. i also use apt and yum proxys and node npm proxys its part of my general flow as i always want to have a copy of all needed packages.

@monaka
Copy link
Member

monaka commented Nov 19, 2019

On the online approach, eclipse-che/che-plugin-broker#63 may provide some helps. In addition, the download phase can be done in parallel.

And it may be effective pre-loading docker images to nodes by DaemonSet.

@sunix
Copy link
Contributor

sunix commented Nov 27, 2019

Should this include the work started by @davidfestal on CRDs and remove the SPI ? we would gain 10 secs sometimes.

@l0rd
Copy link
Contributor

l0rd commented May 25, 2020

ImagePull policies set to IfNotPresent make workspace startup faster #14698 (comment).

@che-bot
Copy link
Contributor

che-bot commented Jan 4, 2021

Issues go stale after 180 days of inactivity. lifecycle/stale issues rot after an additional 7 days of inactivity and eventually close.

Mark the issue as fresh with /remove-lifecycle stale in a new comment.

If this issue is safe to close now please do so.

Moderators: Add lifecycle/frozen label to avoid stale mode.

@che-bot che-bot added the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Jan 4, 2021
@l0rd l0rd added lifecycle/frozen Indicates that an issue or PR should not be auto-closed due to staleness. and removed lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. labels Jan 4, 2021
@l0rd
Copy link
Contributor

l0rd commented Jan 4, 2021

Related to devfile/devworkspace-operator#209

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind/epic A long-lived, PM-driven feature request. Must include a checklist of items that must be completed. lifecycle/frozen Indicates that an issue or PR should not be auto-closed due to staleness. roadmap/1-year Epics that are planned to complete in the short term (12 months or more)
Development

No branches or pull requests

8 participants