Skip to content

Qsub tunnel

Aim: Describe how to access and use the Grid cluster from stoomboot

Target audience: Users of the Stoomboot cluster who temporarily need more compute capacity

Introduction

There is a special functionality that has been created for local Nikhef users to submit to the Nikhef Grid cluster (also known as NDPF, or the Nikhef Data Processing Facility cluster) as if a user were submitting to the Stoomboot cluster. The qsub tunnel allows users access to more compute, networking and storage resources for larger-scale workflows. However, this comes with some additional complexity.

Note, this is an experimental service! There is no service level defined of the qsub tunnel, and it is not guaranteed to be available or to suit any/all purposes. This service is open to selected users. In order to gain access, users must send a request to grid.sysadmin@nikhef.nl and ask their account to be enabled for this service.

Usage

Setting up and using directories

Email grid.sysadmin@nikhef.nl to ask for the creation of a directory for the qsub tunnel service. Your Nikhef username should appear in the /data/tunnel/user/[username] file system that is accessible from the interactive nodes.

Jobs can be submitted to the Grid batch system from the interactive nodes.

The tunnel directory /data/tunnel/user/[username] is for the exchange of log files and stdout/stderr only from your job submissions. Do not use it for data transfer; quota on this file system is intentionally limited to 256 MB per user.

Note: neither your desktop nor Nikhef home directory is available on the Grid cluster. So you will need to make use of the /data/tunnel file system for logs and stdout/stderr, and dCache for storing output of your jobs (more information on this below).

Certificates and proxies

Get a valid proxy with voms-proxy-init -voms [your_experiment]. See the explaination on the Grid jobs page.

Test storage access

With your proxy generated, use the xrootd or WebDAV tools to access the fast bulk storage from your job. For example, by trying

## Set the environment variable for your X509 user proxy file stored in /tmp.
export X509_USER_PROXY=/tmp/x509up_u$(id -u)
## This command needs to be run every time  there's a new session unless it is placed in a ~/.bashrc or ~/.bash_profile file

## List directories in the data folder. This will test if your authentication is working correctly.
davix-ls --cert $X509_USER_PROXY https://dcache.nikhef.nl:2880/dcache/test/

## Test command for copying files using xrootd.
xrdcp ./myfile.dat xroot://dcache.nikhef.nl/dcache/test/

Submitting batch jobs

nsub (/global/ices/toolset/bin/nsub) is the utility you want to use for submitting jobs. It has qsub command plus some extra scripts to make your submission to the Grid cluster easier.

[maryh@stbc-i2 ~]$ /global/ices/toolset/bin/nsub --help
The nsub utility submits batch scripts from ikohefnet hosts to the
NDPF using the shared file system. The jobs can be submitted from selected
hosts on the ikohef network and will run on the NDPF clusters.

Usage: nsub [-o output] [-e error] [-q queue] [-v] [--quiet] [-I]
      [-t njobs] [-N name] [-f proxyfile] [-c rcfile] <job> ...

Arguments:
  -o outputfile            destination of stdout, must be in sharedfs
  -e errorfile             destination of stderr, must be in sharedfs
  -q queue                 queue to which to submit on korf.nikhef.nl
  -v/--quiet               be more verbose/do not warn about relocations
  -N name                  name on the job in the pbs queue
  -I                       interactive jobs are NOT SUPPORTED
  -n                       do not actually submit job (dryrun)
  -c rcfile                additional definitions and defaults
  <job> ...                more than one job may be submitted to PBS,
                           (no -o or -e possible if more than one job given)
Defaults:
  shared file system       /data/tunnel
  userdirectory            /data/tunnel/user/maryh
  pbs server               korf.nikhef.nl
  queue                    medium

Fast local disk space is available on each worker node. Use $TMPDIR for all your data storage and cache needs—and not your home! The size of the TMPDIR is more than 50GB per job slot. Once the job is finished, this directory is purged.

By default, the nsub utility will submit to this medium queue. This queue is called medium and has a maximum wall clock time of 36 hours.

Example job script

A typical job script looks like:

#! /bin/sh
#
## @(#)/user/davidg/ndpf-example.sh
#
#PBS -q medium@korf.nikhef.nl
#
cd $TMPDIR
xrdcp  xroot://dcache.nikhef.nl/dcache/test/maryh/welcome.txt `pwd`/welcome.txt
mv welcome.txt goodbye.txt
xrdcp --force `pwd`/goodbye.txt xroot://dcache.nikhef.nl/dcache/test/goodbye.txt
dt=`date`
nodes=`cat $PBS_NODEFILE`
echo "Copied the welcome to the goodbye file on $dt!"
echo "and used hosts $nodes for that"

which can be submitted to the Grid batch system with a command like:

/global/ices/toolset/bin/nsub /user/davidg/ndpf-example.sh

In the Grid cluster, you will see the tunnel file system and the experiment's software distributions usually available via CernVMFS (for example, check what is available with an ls command on an interactive node: ls /cvmfs/atlas.cern.ch/).

At the end of the job, write the results to dCache storage using xrootd or WebDAV. More information can be found on the dCache storage page. Note that you cannot overwrite files in dCache storage—select unique names or remove your old data with a command like:

## xrdfs host[:port] [command [args]]
xrdfs xroot://dcache.nikhef.nl/dcache/test/maryh/welcome.txt rm

Check xrdfs --help for more options.

Checking the status of your jobs

From interactive nodes, use qstat @korf to query the Grid cluster head node (korf.nikhef.nl).

From login.nikhef.nl, use /opt/torque4/bin/qstat-torque @korf.

Note, this will not return information about other jobs—only the jobs you have submitted and only when you have submitted a job.

Environment variables

The nsub wrapper will override the following environment variables to match the specific needs of the Grid cluster. If you encounter some strange errors, you may want to review your setup to see if you need any of these variables for a specific purpose.

LCG_GFAL_INFOSYS
GLITE_LOCATION
GLOBUS_TCP_PORT_RANGE
GLITE_LOCATION_VAR
GLITE_SD_SERVICES_XML
EDG_LOCATION
EDG_WL_LOCATION
GLITE_SD_PLUGIN
GLITE_WMS_LOCATION
GLITE_LOCAL_CUSTOMIZATION_DIR
X509_CERT_DIR
X509_VOMS_DIR

If you are not using the nsub wrapper, source the setup script via executing

. /global/ices/lcg/current/etc/profile.d/grid-env.sh

at the top of your job script.

Contact

  • Email grid.sysadmin@nikhef.nl.