The CREAM user's guide is available at:
https://edms.cern.ch/document/595770
CREAM User's Guide
1 CREAM Command Line Interface Guide
This section briefly explains the sequence of operations to be performed by a user to submit and then manage jobs on CREAM based CEs, referring to the C++ Command Line Interface (CLI).
1.1 Before starting: get your user proxy
Before using any of the CREAM client commands, it is necessary to have a valid proxy credential available on the client machine. You can create it using the
voms-proxy-init
command. If you already have a valid proxy available on your machine just make the
X509_USER_PROXY
environment variable point to it.
In order to get a proxy certificate issued by VOMS, you should have in the directory
/etc/vomses
the proper VOMS file containing a line as follows:
"EGEE" "kuiken.nikhef.nl" "15001" "/O=dutchgrid/O=hosts/OU=nikhef.nl/CN=kuiken.nikhef.nl" "EGEE" "22"
or the corresponding line for your VO. You also need to install the VO related .lsc files in the
/etc/grid-security/vomsdir/<VO>
directory. In a standard EMI UI installation, these settings should be already there.
Make moreover sure you have in the directory
$HOME/.globus
your certificate/key pair, i.e. the following files:
usercert.pem
userkey.pem
Note that file permissions are important: the two files must have respectively 0600 and 0400 permissions.
Then you can issue the VOMS client command (you will be prompted for the pass-phrase):
$ voms-proxy-init -voms dteam
Enter GRID pass phrase:
Your identity: /C=IT/O=INFN/OU=Personal Certificate/L=Padova/CN=Massimo Sgaravatto
Creating temporary proxy ............................................................................................................................................... Done
Contacting voms2.hellasgrid.gr:15004 [/C=GR/O=HellasGrid/OU=hellasgrid.gr/CN=voms2.hellasgrid.gr] "dteam" Done
Creating proxy .............................. Done
Your proxy is valid until Sat Apr 30 05:05:49 2011
$ voms-proxy-info -all
subject : /C=IT/O=INFN/OU=Personal Certificate/L=Padova/CN=Massimo Sgaravatto/CN=proxy
issuer : /C=IT/O=INFN/OU=Personal Certificate/L=Padova/CN=Massimo Sgaravatto
identity : /C=IT/O=INFN/OU=Personal Certificate/L=Padova/CN=Massimo Sgaravatto
type : proxy
strength : 1024 bits
path : /tmp/x509up_u500
timeleft : 11:59:55
key usage : Digital Signature, Key Encipherment, Data Encipherment
=== VO dteam extension information ===
VO : dteam
subject : /C=IT/O=INFN/OU=Personal Certificate/L=Padova/CN=Massimo Sgaravatto
issuer : /C=GR/O=HellasGrid/OU=hellasgrid.gr/CN=voms2.hellasgrid.gr
attribute : /dteam/Role=NULL/Capability=NULL
attribute : /dteam/italy/Role=NULL/Capability=NULL
attribute : /dteam/italy/INFN-PADOVA/Role=NULL/Capability=NULL
timeleft : 11:59:55
uri : voms2.hellasgrid.gr:15004
2 Man pages for CREAM Command Line Interface
3 Forward of requirements to the batch system
The CREAM CE allows to forward, via tha BLAH component, requirements to the batch system.
For this purpose the JDL =CERequirements- attribute, described at
http://wiki.italiangrid.org/twiki/bin/view/CREAM/JdlGuide#3_27_CERequirements, can be used.
For direct submissions to the CREAM CE (e.g. jobs submitted to the CREAM CE using the CREAM CLI
glite-ce-job-submit
command) the CeRequirements attribute is supposed to be filled by the end-user.
For jobs submitted to the CREAM CE via the WMS, the CeRequirements attribute is instead filled by the WMS, considering the JDL
Requirements
expression and the value of the
CeForwardParameters
attribute in the WMS configuration file.
For example, if in the user JDL there is :
Requirements= "other.GlueHostMainMemoryRAMSize > 100 && other.GlueCEImplementationName==\"CREAM\"";
and if the WMS configuration file there is:
CeForwardParameters = {"GlueHostMainMemoryVirtualSize","GlueHostMainMemoryRAMSize", "GlueCEPolicyMaxCPUTime"};
in the JDL sent by the WMS to CREAM there will be:
CeRequirements= "other.GlueHostMainMemoryRAMSize > 100";
The CERequirements expression received by CREAM is then forwarded to BLAH. Basically BLAH manages the CERequirements expression setting some environment variables, which are available and can be properly used by the
/usr/bin/xxx_local_submit_attributes.sh
script (e.g.
/usr/bin/pbs_local_submit_attributes.sh
for PBS/Torque,
/usr/bin/lsf_local_submit_attributes.sh
for LSF). This script must be properly created by the site admin.
For example, considering the following CeRequirements expression:
CeRequirements="other.GlueHostMainMemoryRAMSize > 100 && other.GlueCEStateWaitingJobs <10 && other.GlueCEImplementationName==\"CREAM\" && other.GlueHostProcessorClockSpeed >= 2800 && (Member(\"FDTD\", other.GlueHostApplicationSoftwareRuntimeEnvironment))";
the following settings will be available in $GLITE_LOCATION/bin/xxx_local_submit_attributes.sh:
GlueHostMainMemoryRAMSize_Min='100'
GlueCEStateWaitingJobs_Max='10'
GlueCEImplementationName='CREAM'
GlueHostProcessorClockSpeed_Min='2800'
GlueHostApplicationSoftwareRuntimeEnvironment='"FDTD"'
What is printed by the
/usr/bin/xxx_local_submit_attributes.sh
script is automatically added to the submit command file.
For example if the JDL Cerequirements expression is:
CeRequirements = "(Member(\"FDTD\", other.GlueHostApplicationSoftwareRuntimeEnvironment))";
and the
/usr/bin/pbs_local_submit_attributes.sh
is:
#!/bin/sh
if [ "$other.GlueHostApplicationSoftwareRuntimeEnvironment" == "FDTD" ]; then
echo "#PBS -l software=FDTD"
fi
then the PBS submit file that will be used will include:
...
...
# PBS directives:
#PBS -S /bin/bash
#PBS -o /dev/null
#PBS -e /dev/null
#PBS -l software=FDTD
....
....
where the line:
#PBS -l software=FDTD
is set via the
/usr/bin/pbs_local_submit_attributes.sh
script.
Please note that there are no differences if in CeRequirements expresssion there is e.g.
CeRequirements = other.xyz==\"ABC\"
or:
CeRequirements = "xyz==\"ABC\"";
In both cases in
/usr/bin/xxx_local_submit_attributes.sh
the variable
xyz
will be set.
As shown above, having
x>a
or
x>=a
doesn't make any difference in the setting of the environment variable
x
in the
/usr/bin/xxx_local_submit_attributes.sh
script. It will be in both cases:
x_Min='a'
--
MassimoSgaravatto - 2011-04-07