[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [HTCondor-users] Directing jobs to certain nodes.



> From: Paul E Tader <ptader@xxxxxxxx>
> Date: 12/21/2015 03:32 PM
>
> Hello everyone,
>
> We want to send jobs to a subset of our nodes. Only these jobs should run
> on these nodes. Iâve read though the docs and tried several variations of
> the configuration below but I still canât get my jobs to run only on the
> re-configured nodes.
>
> # condor_version
> $CondorVersion: 8.2.8 Aug 03 2015 $
> $CondorPlatform: X86_64-CentOS_6.6 $
>
> In our nodes configuration:
> IsDESNode = True
> STARTD_ATTRS = IsDESNode, $(STARTD_ATTRS)
> STARTD_EXPRS = $(STARTD_EXPRS)
> START = ($(START))
>
> # condor_config_val -dump |grep -i des
> IsDESNode = True
>
> âand in my submit file
> +IsDESNode = True
> +Requirements = (IsDESNode =?= True)
>
> The jobs runs, but on other nodes. Any incorrect syntax or missing?  
> Thanks for any help or tips.
>
> Paul

Hi Paul!

At first glance, the "requirements" line should not have a plus sign in front of it.

The plus sign syntax creates a job classad attribute by that name, as you know, but having the plus sign in front of requirements converts it from a submit description directive which is processed by condor_submit into an attribute definition, which may be causing things to get a bit confused - the requirements _expression_ from the submission gets reworked a bit to add the architecture and opsys, among other things.

In addition, you're defining both a MY.IsDESNode attribute and a TARGET.IsDESNode attribute, but you're not distinguishing between them in your requirements _expression_, so when the job runs on a non-DES node, it's assuming that your "MY.IsDESNode" definition from the submit description is what you're talking about, and it's always true, so the job will run anywhere.

You don't need to define STARTD_EXPRS, that's legacy.

What you want to do is distinguish between the job and the node. Assert "IsDESNode" in your machine ClassAds, and "IsDESJob" in your submit description for the job ClassAds. That way you can achieve your aim of insuring that these jobs only run on those nodes: the job's requirements _expression_ will require that the node advertise IsDESNode.

Next, in order to insure that those machines ONLY run DES jobs and nothing else, if you want that, you can add "&& IsDESJob" to the START _expression_ - thus those nodes would only accept jobs which advertised that attribute.

Enjoy!

-Michael Pelletier.