Usage of the RVS cluster

Access to the ELvis remote visualization cluster

Access to the ELvis cluster nodes is restricted using IP whitelisting, as a security measure. This means that in order to connect to an ELvis node, you need to have one (or more) of the IP addresses from which you want to connect registered. You can request access at hic@surfsara.nl. Note that in general IP ranges for the Dutch universities will have been registered already, so just try to connect first, it may already work.

Once you're logged into elvis.surfsara.nl and you have secured a reservation for a render node you can log on through to that node, if needed. Note that for general usage you only need to access elvis.surfsara.nl, make a node reservation, start a VNC session and connect to it with your VNC viewer. Command-line access to the other nodes usually isn't necessary for this kind of usage. Within your VNC session you can, of course, open a terminal to perform command-line operations.

The render nodes have hostnames of the form s37n[1-9].elvis.surfsara.nl.

OpenGL rendering

Normally, an OpenGL-based visualization application running on your local machine will send OpenGL rendering commands to the GPU and let it handle the rendering and displaying of the output. The ELvis cluster is slightly different in this respect, as the rendered output needs to be transfered back to the user. To accomplish this in a fairly user-transparent manner the packages VirtualGL and TurboVNC are used on the cluster. VirtualGL provides a way to intercept the rendering output of an OpenGL-based application with high performance, while TurboVNC is capable of compressing and serving that output on-thy-fly. OpenGL applications do not have to be modified in any way in this scheme, but the user does need to use an extra command when starting applications, which will be described below.

Workflow

In general, the steps to use the service are shown below. For a detailed walk-through of a remote visualization session see the document at the end of this page.

  1. Log in on elvis.surfsara.nl using SSH
  2. Note: first-time users should set a VNC password using /opt/TurboVNC/bin/vncpasswd. Please use a password different from your SURFsara CUA password! . Please check if the directory $HOME/.vnc exists, and if not, create it by hand and again set the VNC password.
  3. Use the script /sara/sw/remotevis/scripts/rvs_vnc to request a VNC session on a node from the resource allocation system for a certain amount of time, e.g rvs_vnc 2h.
  4. The script will output the node that was reserved for you, and shows an example VNC connection command. Depending on the VNC client you use (GUI or command-line) the command may differ, the <hostname>:<displaynumber> part will be the same, though.
  5. Start the VNC client on your local machine, e.g. vncviewer s37n8.elvis.surfsara.nl:1
  6. Enter your VNC password
  7. You should now have access with your VNC viewer to the remote desktop on the node assigned to you
  8. Within the VNC session open a terminal, load any necessary modules from the module system and run your application prefixed with "vglrun", e.g. vglrun glxgears
  9. When you're done with your session use the "Logout..." command in the LXDE menu. By using "Logout..." your VNC session will end, thereby freeing the reserved node. If you closed your VNC viewer without using Logout... simply reconnect with your VNC viewer. Your VNC session on a reserved ELvis node will stay active until you either use Logout, or until the reserved time slot expires.

Notes:

  • There are hard limits to the duration of node reservations, depending on the number of nodes and walltime requested. See here for an overview.
  • If a session goes beyond this limit it will be terminated without warning. You can check when your reservation ends in the output of /sara/sw/remotevis/scripts/rvs_show
  • You can specify the desktop resolution the VNC server uses with the -r <w>x<h> option to rvs_vnc. Or set the RVS_VNC_RESOLUTION environment variable in your .bashrc (or similar config) file, to not have to use -r each time.

Useful documentation