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

Re: [Condor-users] Jobs License Management

Hi Jason,

Thank you for your very detailed answer about concurrency limits. I will try the develop version 7.1.3 and come back if there are more questions.
Is there any advanced draft documentation available?


"Jason Stowe" <jstowe@xxxxxxxxxxxxxxxxxx>
Sent by: condor-users-bounces@xxxxxxxxxxx

14/10/2008 20:16

Please respond to
jstowe@xxxxxxxxxxxxxxxxxx; Please respond to
Condor-Users Mail List <condor-users@xxxxxxxxxxx>

"Condor-Users Mail List" <condor-users@xxxxxxxxxxx>
Re: [Condor-users] Jobs License Management

As a quick note, if you aren't using 7.1.3 and you only have one
license-type to manage, you can schedule all jobs that require it on
one scheduler, and use MAX_JOBS_ RUNNING to constrain the number of
running jobs that require that license-type.

On concurrency limits, I wanted to add some important features/cases
that could be very useful.

One of the primary use cases we've seen over and over again with
Condor pools is managing jobs that require *multiple* licenses. Sun
Grid Engine users create "consumable" resources for licenses, which
are similar to concurrency_limits. Jobs can require access to multiple
of these resources.

You can now do this within Condor 7.1.3. This version manages not only
one limit, like Matt's example, but also manages multiple constraint
limits at the same time. For example, let's say you have a base
application, like a renderer, and a set of plug-ins for that
application. You have different numbers of licenses for each, so now
you can say in the Negotiator Config:
# three licenses for the application
#one license each for the plugins

You can now specify multiple limits in your jobs using:
concurrency_limits = APPNAME, APPNAME_PLUGIN_A
concurrency_limits = APPNAME, APPNAME_PLUGIN_B

Also, let's say you have a job that uses two of the application's
licenses, you could say:
concurrency_limits = APPNAME, APPNAME

Plus these limits don't apply solely to licenses (as mentioned earlier
they don't check licenses out of FlexLM). Jobs can now be run with
limits on other types of load-based resources. If you want to ensure
that load on a database is healthy you can constrain the number of
allowed jobs that connect to it, as an example, by telling the
and tagging jobs that use the DB with:
concurrency_limits = ..., PRODUCTION_DATABASE

Alternately, Condor already has tags about the FileSystemDomain, but
using concurrency limits you can constrain the number of jobs
concurrently accessing the filer to ensure it isn't overwhelmed:

Then within jobs you can tag the resources that the job requires to
ensure that your grid runs within healthy limits:

It is important to realize that over-constraining can lead to
scheduling issues/starvation, and this system also *requires* that all
jobs which use resources honestly report them in the
concurrency_limits tag.

Personally I am very excited about this feature, as it is one we and
various other folks have been requesting/bumping into for the past
couple of years. Should be applicable to a number of interesting uses.

Hope this helps...

Good Luck!

Jason A. Stowe
cell: 607.227.9686
main: 888.292.5320

Cycle Computing, LLC
Leader in Condor Grid Solutions
Enterprise Condor Support and Management Tools


On Tue, Oct 14, 2008 at 4:51 PM, Matthew Farrellee <matt@xxxxxxxxxx> wrote:
> You can use Concurrency Limits from 7.1.3 [1].
> Assign some number of licenses for use by Condor jobs, say 300. In your
> Negotiator's configuration add: MYLICENSE_LIMIT = 300
> Now in each job that needs the license add: concurrency_limits = MYLICENSE
> Condor does not check out the licenses from Flexlm, it just tries to
> keep the number of jobs that /will/ check out licenses under control.
> Especially since you are sharing licenses between batch jobs and
> interactive users you should setup your jobs to notice if they failed
> because they did not checkout a license. This configuration will be
> specific to your application, but the document you already mentioned has
> a good example [2]. If your program exits with code 52 when it fails to
> checkout a license you'd add this to your job: > > (ExitBySignal == TRUE) || (ExitCode != 52)
> Best,
> matt
> [1]

Jason A. Stowe
cell: 607.227.9686
main: 888.292.5320

Cycle Computing, LLC
Leader in Condor Grid Solutions
Enterprise Condor Support and Management Tools

Condor-users mailing list
To unsubscribe, send a message to condor-users-request@xxxxxxxxxxx with a
subject: Unsubscribe
You can also unsubscribe by visiting

The archives can be found at:

This message is intended solely for the use of its addressee and may contain privileged or confidential information. If you are not the addressee you should not distribute, copy or file this message. In this case, please notify the sender and destroy its contents immediately.
Esta mensagem é para uso exclusivo de seu destinatário e pode conter informações privilegiadas e confidenciais. Se você não é o destinatário não deve distribuir, copiar ou arquivar a mensagem. Neste caso, por favor, notifique o remetente da mesma e destrua imediatamente a mensagem.