Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Visual Studio Code is usually started on a localhost, which results in starting a local application to interact with the guiGUI.

On Ares and Athena, we cannot easily expose the GUI to the external world, as calculations are done internally on a computing node, not visible from the Internet.

Therefore, in ACC Cyfronet we have prepared start-vscode-web  a script that can be used easily with the VSCode module. In this guide, we will explore how to use it to start a VSCode web session. 

How to use on Ares?

Via SSH tunnel

The trick is to start the VSCode webserver via a job submitted to a computing node and creating a create an SSH tunnel to access it on a local PC.

Submit

...

a vscode-server job to a computing node

Create the following file:

Code Block
languagebash
titlerstudiovscode-server-notebooknode.slurm
#!/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/1.86.1

mkdir -p $SCRATCH/vscodedata


ln -s $TMPDIR  /tmp/${SLURM_JOB_ID}
export TMPDIR=/tmp/${SLURM_JOB_ID}

## start an rserver instance
start-vscode-web --server-data-dir $SCRATCH/vscodedata

...

Send job to queue using sbatch command on the login node of Ares

Code Block
languagebash
sbatch vscode-run.slurm

Wait until your job enters the running state.

To check the status of the submitted job using using squeue command

Code Block
languagebash
squeue -j <JobID>

or all jobs of the user

Code Block
languagebash
squeue -u $USER

which lists all  current user jobs submitted to the queue ($USER - is enviromentalan environment variable).

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 is waiting for them to become ready for use (e.g. booting). On Ares Ares CF state 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.

Make a tunnel

In your directory cat When the job starts, it will create a file named code-server-log-<jobID>.txt  in the folder from which the sbatch command was called. Go to this directory and use cat  to see the contents of VSCode log file:

Code Block
languagebash
cat code-server-log-XXXXXXX.txt

where `XXXXXXX` is your sbatch job id which is displayed after you run it f.e. `cat . For example, for the job with ID 7123485, the file name will be  code-server-log-7123485.txt`.

It will show you something like The output will look similar to this:

Code Block
languagebash
    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

At the top, we can see a command prepared for you to run in your local terminal.

Copy it and execute it in your local terminalExec in another shell at your local computer given command to make a tunnel:

Code Block
languagebash
ssh -o ServerAliveInterval=300 -N -L 9633:172.22.17.186:9633 plguser@ares.cyfronet.pl

Note that in your case, the ports in the tunnel command will be different. Also, instead of plguser  your username will be displayed.

Start the

...

VSCode web

...

GUI

Now, when the tunnel is running, you will need to open the link shown in the log file. Copy it and open it in your browser.

Open in browser: Web UI link from example log above: http://localhost:9633?tkn=ee8e3c6e34ad22ea267a9532635cabe8d1b5fbc59b8705e91737a6129a866b5b

Note that in your case, this URL will be different.

Preserve server data

To use preserve the same VSCode server data and VSCode environment, use the option --server-data-dir with some location pointing at some directory of your choice. The location should be the same each time to save configuration. In this example, we have used  $SCRATCH/vscodedata is path as the storage location example.

Stop job

if 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 squeue -u $USER commands.

Code Block
scancel <JOBID>

...

To check submitted and running jobs use hpc-jobs or qsueue squeue -u $USER commands.

To check information about finished and historic jobs use hpc-jobs-history command. For example with the option "-d 30"  that command shows all user's jobs from the last 30 days. More info in hpc-jobs-history -h

Code Block
hpc-jobs-history -d 30

How to use on Athena?

On To use on Athena supercomputer the only change in script is name of the queue: , you need to change --partition  to plgrid-gpu-a100 and name of the module to load: VSCode/1.85.0.

The script with those modifications can be found below:

Code Block
languagebash
titlevscode-server-node-Athena.slurm
#!/bin/bash
#SBATCH --partition plgrid-gpu-a100
#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/1.85.0

mkdir -p $SCRATCH/vscodedata

ln -s $TMPDIR  /tmp/${SLURM_JOB_ID}
export TMPDIR=/tmp/${SLURM_JOB_ID}


## start an rserver instance
start-vscode-web --server-data-dir $SCRATCH/vscodedata

An alternative approach - remote tunnels

Another way to use the VSCode remotely on the cluster is via a tunnel with a standard desktop GUI. Using this approach is similar with the one for setting up web browser access.

Installing Remote Tunnels extension

To begin with, we need to install the extension