Visual Studio Code is usually started on a localhost, which results in starting local application to interact with the gui.
On Ares and Athena we cannot easily expose the GUI to external world, as calculations are done internally on a computing node, not visible from Internet.
The trick is to start VSCode webserver via a job submitted to a computing node and creating a SSH tunnel to access it on a local PC.
Create the following file:
#!/bin/bash #SBATCH --partition plgrid #SBATCH --nodes 1 #SBATCH --ntasks-per-node 6 #SBATCH --time 0:30:00 #SBATCH --job-name code-server #SBATCH --output code-server-log-%J.txt module load vscode/20240129-insiders mkdir -p $SCRATCH/vscodedata ## start an rserver instance start-vscode-web --server-data-dir $SCRATCH/vscodedata
Save it as vscode-run
.slurm
.
Send job to queue using sbatch
command on login node of Ares
sbatch vscode-run.slurm
Wait until your job enters running state.
To check status of submitted job using squeue
command
squeue -j <JobID>
or all jobs of user
squeue -u $USER
which lists all current user jobs submitted to queue ($USER - is enviromental).
Common states of jobs:
PD - PENDING
- Job is awaiting resource allocation.R - RUNNING
- Job currently has an allocation and is running. CF - CONFIGURING
- Job has been allocated resources, but are waiting for them to become ready for use (e.g. booting). On Ares CF
state could last for up to 8 minutes in case when nodes that have been in power save mode. CG - COMPLETING
- Job is in the process of completing. Some processes on some nodes may still be active.In your directory cat VSCode log file:
cat code-server-log-XXXXXXX.txt
where `XXXXXXX
` is your sbatch job id which is displayed after you run it f.e. `cat code-server-log-7123485.txt
`
It will show you something like this:
Copy/Paste this in your local terminal to ssh tunnel with remote ----------------------------------------------------------------- ssh -o ServerAliveInterval=300 -N -L 9633:172.22.17.186:9633 plguser@ares.cyfronet.pl ----------------------------------------------------------------- Then use Web UI link located at the end of the log in your web browser: * * Visual Studio Code Server * * By using the software, you agree to * the Visual Studio Code Server License Terms (https://aka.ms/vscode-server-license) and * the Microsoft Privacy Statement (https://privacy.microsoft.com/en-US/privacystatement). * Web UI available at http://localhost:9633?tkn=ee8e3c6e34ad22ea267a9532635cabe8d1b5fbc59b8705e91737a6129a866b5b
Exec in another shell at your local computer given command to make a tunnel:
ssh -o ServerAliveInterval=300 -N -L 9633:172.22.17.186:9633 plguser@ares.cyfronet.pl
Open in browser: Web UI link from log above: http://localhost:9633?tkn=ee8e3c6e34ad22ea267a9532635cabe8d1b5fbc59b8705e91737a6129a866b5b
To use the same server data and VSCode environment, use option --server-data-dir
with some location. The location should be the same each time to save configuration. In this example $SCRATCH/vscodedata
is the location example.
if you wish to to end your sbatch, use scancel <JOBID>
command, where JOBID is your tunnel JOBID you can look it up with hpc-jobs
or qsueue -u $USER
commands.
scancel <JOBID>
To check submitted and running jobs use hpc-jobs
or qsueue -u $USER
commands.
To check information about finished and historic jobs use hpc-jobs-history
command. For example with option "-d 30" that command shows all user's jobs from last 30 days. More info in hpc-jobs-history -h
.
hpc-jobs-history -d 30
On Athena supercomputer the only change in script is name of the queue: plgrid-gpu-a100
and name of the module to load: VSCode/1.85.0
.