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

Re: [Condor-users] Administrating Licences with Condor

> We use several commercial simulation software in our
> condor-cluster. Most of those programmes use FlexLM-Licences.
> Is it possible to check with condor, whether licences are
> available or not? Without checking for free licences, it
> occurs that Condor gets an error because the job don't start.


Right now Condor does not directly support management of non-compute
resources. There are projects in the works to expand Condor's management
capabilities (see Dan Bradley's 2006 Condor Week presentation titled
"Schedd on the Side"

There are a bunch of different ways you can get around this limitation.
Here are two of my favourites.

You can set up machines to favour jobs that need licenses, and you can
limit license-bound jobs to only run on a handful of machines. Lets say
you have 2 licenses for Product A, Version 1. You make it known on 2
VM's in your system that they like to run jobs that need Product A,
Version 1 using the RANK expression in the local condor configuration
file on the machines:

       RANK = (RequiresProductA =?= True) * 1000

And you also make it known that these machines can run Product A jobs:

	HasProductA = True
	ProductAVersion = 1.0
	STARTD_EXPRS = $(STARTD_EXPRS), HasProductA, ProductAVersion

Now when you submit jobs to the system that need this license you tell
the system these jobs need to run on machines that have the software
licenses you need. In your submit ticket you can do:

	+RequiresProductA = True
	requirements = HasProductA && ProductAVersion >= 1.0

Of course, you lose the flexibility of the FlexLM license approach with
the method. But it gets you most of the way there.

Or, if you really want to have jobs run anywhere you can submit all your
jobs that need Product A held and then use a cron job to release them
and ensure that no more than 2 jobs that require Product A are ever
running. Depending on how much control you have over your submits you
can look at using DAGMAN to limit the number of running jobs in a DAG to
the number of available FlexLM licenses.

- Ian