Versions Compared

    Key

    • This line was added.
    • This line was removed.
    • Formatting was changed.

    Synopsis

    Jobs can have requirements, which are resources or other conditions which must be available before the job can run. Qube!'s requirement specification is expression based. The syntax for specifying the expression is similar to Perl or C. The proper use of these expressions will allow a user to specify the host and/or the conditions required before a job is allowed to run. The syntax for specifying the expression is similar to Perl or C. The evaluation of the expression where:

    <expression> == true

    allows the job to be dispatched to a qualifying host.

    An expression consists of operators and operands. Operators are either text or symbolic. These are equivalent:

    ...

    eq linux my job on any host except qb001
    SyntaxExplanation
    % qbsub --requirements "host.processors.total > 10" setCommand line example that uses a host resource expression
      
      
    host.os eq linuxRun my job only on Linux hosts
    "host.os == 'winnt' and host.processor_speed >= 3000"Run on a Windows machine that has a processor speed of at least 3GHz
    host.name ne "qb001"Run the my job on a host with the Maya job typeany host except qb001
    "maya" in host.jobtypesRun my the job only on dual processor hostson a host with the Maya job type
    host.processors.total == 2Run my job only if there isn't already one of this job's instances running on iton dual processor hosts
    not (job.id in host.duty.id)Run my job only one "kind" of job on a worker at the same time
    (this will allow other kinds of jobs still to run, different from reserving all job slots)jobif there isn't already one of this job's instances running on it

    job.kind = 'test' (or any other value, your choice...)
    not(job.kind in host.duty.kind)

    (Also see How to restrict a host to only one instance of a given kind of job, but still allow other jobs)

    Examples

    Here are examples of job requirements that use job resource expressions:
    % qbsub --requirements "job.type in host.jobtypes" ls
    % qbsub --requirements "job.user eq host.name" ls

    Here are some examples of job requirements that include property expressions:

    % qbsub --requirements "host.os eq linux" ls
    % qbsub --requirements "host.name eq host01" ls
    % qbsub --requirements "host.flag.remove_logs host.group has host05" ls
    % qbsub --requirements "(host.os == 'winnt') and host.processor_speed >= 100" ls

    ...

    Run only one "kind" of job on a worker at the same time
    (this will allow other kinds of jobs still to run, different from reserving all job slots)