The core problem: VSCode users connecting to an HPC login node cause performance issues, mainly through heavy file I/O (VSCode’s file watcher crawls the filesystem aggressively).
Recommended solutions, in order of popularity:
-
Open OnDemand (OOD) – The most widely adopted solution. Multiple institutions (Iowa State, University of Vermont, University of Delaware, etc.) provide VSCode Server as an interactive app through OOD, which runs the session on a compute node with proper resource constraints.
-
SSH Tunneling to a compute node – Start an interactive job, launch VSCode Server on the compute node bound to a port (e.g. 8080), then use SSH port-forwarding to access it from a local browser. More flexible but requires some admin setup.
-
Registered SSH Tunnels / Code Tunnels – Iowa State and University of Vermont use code tunnels (via tmux + VSCode tunnel) so users can connect from their local VSCode with the Remote Development extension.
-
Dedicated VSCode landing node – At least one institution set up a separate node specifically for VSCode connections, keeping load off the main login nodes.
-
Restrict VSCode’s file watcher – As a mitigation (not a full fix), users should edit their
config.jsonto limit which paths VSCode crawls, which significantly reduces filesystem I/O load.
Bottom line: The consensus is to keep VSCode off login nodes entirely and route it through compute nodes, with OOD being the most common and admin-friendly approach.
Here are the links and resources supporting the solutions:
-
Purdue HPC step-by-step guide – Covers using VSCode locally and connecting to compute nodes (including interactive use like Jupyter/RStudio): https://rcac-bioinformatics.github.io/guide/vscode/#vscode-step-by-step-instructions
-
Iowa State University guide – Three methods: OOD, registered tunnel, and SSH to a separate login node: https://research.it.iastate.edu/using-vs-code-cluster
-
University of Delaware – vscode-shell-proxy utility (by Jeff Frey) – Eliminates issues with the VSCode Remote-SSH extension on HPC clusters. Available on GitHub, with full details on their wiki:
-
Search GitHub for
vscode-shell-proxyby Jeff Frey / University of Delaware -
Wiki page: “Appropriate use of RCI Clusters as a VSCode Backend” (UD’s RCI documentation)
-
-
UoU Arbiter – A tool for managing resource usage on login nodes (not VSCode-specific, but relevant for enforcing limits): https://github.com/chpc-uofu/arbiter/tree/main
-
Open OnDemand – The platform used by many institutions to provide browser-based VSCode access on HPC. Not a direct link from the document, but the official resource is: https://openondemand.org