Monday, May 18, 2009

Cream in Action : Consumable Resources

I am not sure if you remember this previous post but I said stated that some experimenting was required in order to get consumable resources working with the glite middleware stack.

The reason for this requirement was that for some licensed software (FDTD by Lumerical) that we have installed on our cluster. The documented way to 'consume' a license is to qsub directly to the batch system and pass #software -l FDTD. Not much good when you have an lcg-CE in front of it! After some further investigation it appeared that the only way to get this information through the lcg-CE would be to 'patch' the job manager, so that it added this into the generated PBS script based on RSL that could be sent to it. Unfortunately, from what I could see the RSL schema did not have anything that could be used to fit this software attribute out of the box and patching the job manager was not an ideal going forward.

This looked to only leave the option of creating a specific queue for the software and only allowing members of the new VO to run in this queue. However, it finally struck me to look at the capabilities of cream. With the help of Massimo Sgaravatto and David Rebatto I was able to pass this batch system requirement through the wms, cream and finally end up on the batch system correctly with very little customisation.

in summary:

- set in your JDL (the one used for the glite-ce-job-submit command):
cerequirements = "software==\"FDTD\"";
- Create in the CREAM CE node the file:
which has to properly manage the added attribute ("software" in your
case). E.g. for this specific use case it could be something like:

if [ "$software" == "FDTD" ]; then
echo "#PBS -l software=FDTD"

So for any special CE requirements your can handle them by adding them into the file. Cream also has similar capabilities for other batch systems.

As for WMS submission, well when the ice component worked if only for a brief time...
the CErequirements attribute in the JDL sent to CREAM is supposed to be filled by the WMS. This value should basically take into account what it is specified in the Requirements attribute of the JDL and the value specified as CeForwardParameters in the WMS configuration file.

For example, if in your JDL you have:

Requirements= "other.GlueHostMainMemoryRAMSize > 100 && other.GlueCEImplementationName==\"CREAM\"";

and if the conf file of the WMS there is:

CeForwardParameters = {"GlueHostMainMemoryVirtualSize","GlueHostMainMemoryRAMSize","GlueCEPolicyMaxCPUTime"};

The JDL sent by ICE to CREAM should be:

CeRequirements= "other.GlueHostMainMemoryRAMSize > 100";

Unfortunately this doesn't work because of this bug

What you can do now, as a workaround, is specify in the JDL used in the submission to the WMS this cerequirements, e.g.:
cerequirements = "software==\"FDTD\"";
This will be forwarded as it is to CREAM.

This has now been written up in more detail on the cream page.

So to sum it up: Thumbs up for cream.

No comments: