XRSL

The Extended Resource Specification Language (XRSL) is an XML based language that was specially designed in PSNC to describe computational jobs within the PROGRESS project. Although its name could suggest it, its syntax does not have anything in common with the syntax of the Globus RSL (Resource Specification Language). The XRSL is rather an XML based counterpart of the RSL.
This language was designed to describe PROGRESS computational jobs in a form understood by the PROGRESS grid broker. The broker parses the XRSL description of a job, prepares its RSL description and submits the job to the grid. But it is not just a simple format conversion. PROGRESS jobs can consist of many computational tasks executed sequentially or in parallel. Therefore the conventional RSL is not satisfactory. The XRSL can also be easily extended in
the future to keep pace with the evolution of the PROGRESS project. Moreover, parsing XML based files is not a demanding task and there already exist libraries that simplify this process to a large extent.
A list of tags of the XRSL language and their attributes is presented in Table 1.

XRSL tag name
Tag description
<job id="">
Starts job description. Must contain exactly one <user> tag and exactly one <task>, <sequence> or <parallel> tag.

id - unique job identifier

<user DN=""/>
Identifies the user submitting the job.

DN - Distinguished Name of the user who submitted the job

<task id="">
Describes the application to be run in the grid, together with all its arguments and parameters. Must contain exactly one <executable> tag and can contain one <resources> tag

id - unique task identifier

<sequence id="">
Describes sequence of applications to execute. Must contain at least one <task> or <parallel> tag

id - unique sequence identifier

<parallel id="">
Describes applications that should be run in parallel. Must contain at least one <task> or <sequence> tag

id - unique parallel identifier

<executable dmsid="" name="" type="" count="">
Describes the application to be run. Must have either the id or name attribute and the type attribute. Can contain one <arguments> tag and one <environment> tag .

dmsid - identifier of a file in the DMS which contains
the application executable
name - alias of the application or full path to the application executable file (for applications that must be installed and cannot be downloaded from the DMS)
type - application type (single, multiple or mpi)
count - number of processes to run (applies to multiple and mpi applications)

<arguments>
Starts a section devoted to application arguments. Must contain at least one <value> or <file> tag .
<value>
Value of an application argument. Contains value of the argument as a string.
<file dmsid="" url="" type="">

Describes an application file argument. Must contain a file name (if the name of the file must be included in the command executing the application). Must have the id or url attribute.

dmsid - file identifier in the DMS
url - file URL in the DMS
type - file type (in, out or inout)

<environment>
Starts the section devoted to stdin, stdout and stderr of application and environment variables used by application. Can contain exactly one <stdin>, <stdout> and <stderr> tag and unlimited number of <variable> tags.
<stdin url="" dmsid="" />
Describes a file used as the application stdin. Must have either the id or url attribute.

url - URL if file in the DMS
dmsid - file identifier in the DMS

<stdout url="" dmsid="" />
Describes a file used as the application stdout. Must have either the id or url attribute.

url - URL if file in the DMS
dmsid - file identifier in the DMS

<stderr url="" dmsid="" />
Describes a file used as the application stderr. Must have either the id or url attribute.

url - URL if file in the DMS
dmsid - file identifier in the DMS

<variable name="">
Describes an environment variable used by
the application. Must contain value of the variable.

name - variable name

<resources>
Starts the section devoted to resources required by the task. Must contain at least one <resource> tag.
<resource type="" value="" >
Describes a resource required by the task. For more information about types of resources, their values and units (if any) see Table 2.

type - type of resource (memory, hostname, ostype, osname, osversion, osrelease, cpuspeed, cpucount, dryrun, maxtime, maxwalltime, maxcputime)
value - value of resource

Table 1: Tags of XRSL language


Resource type
Resource description
memory Minimal amount of memory required by
the application (in MB)
hostname Name of host where the application must be run
ostype Type of operating system (uname)
osname Name of operating system (uname -s)
osversion Version of operating system (uname -v)
osrelease Release of operating system (uname -r)
cpuspeed Required CPU speed
cpucount Required number of CPU units
dryrun Task should be submitted to grid but not run. (yes or no)
maxtime Maximal walltime or cputime for single task execution (in min.)
maxwalltime Maximal walltime for single task execution (in min.)
maxcputime Maximal cputime for single task execution (in min.)

Table 2: Available resources

 

Example 1 presents a description of job 7565 submitted by the user with the distinguished name uid=scdemo,ou=People,o=psnc.pl,o=progress. It consists of only one single task 7966. This task uses a mpi application stored in the DMS in a file with the identifier of 700.
The application execution has five arguments. Arguments ex and eb are switches, which are switched on. Arguments mo and ti have values of 10 and 600 respectively. The application also requires one input file called seqs2assembl, stored in the DMS in a file with the identifier of 648.
The standard output and standard error are redirected to files. The stdout will be sent to file and copied to the DMS to a file with the identifier of 1061. The stderr will also be sent to file and copied to the DMS to a file with the identifier of 1062.
This application does not require any environment variables. Task 7966 has two required resources specified - hostname and cpucount. Therefore, the application connected with this task will be executed on the host bellis-a.man.poznan.pl and use 4 CPU units.

<job id="7965">
    <user dn="uid=scdemo,ou=People,o=psnc.pl,o=progress"/>
    <task id="7966">
        <executable dmsid="700" type="mpi" count="1">
            <arguments>
                <value>ex</value>
                <value>mo10</value>
                <value>eb</value>
                <value>ti600</value>
                <file dmsid="648" type="in">seqs2assembl</file>
            </arguments>
            <environment>
                <stderr dmsid="1061"/>
                <stdout dmsid="1062"/>
            </environment>
        </executable>
        <resources>
            <resource type="hostname" value="bellis-a.man.poznan.pl"/>
            <resource type="cpucount" value="4"/>
        <resources/>
    </task>
</job>

Example 1: Example of a job description in XRSL

 

To learn more about the XRSL language please contact Juliusz Pukacki or Małgorzata Wolniewicz.