Versions Compared

    Key

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

    ...

    Reservations are used to reserve these resources prior to execution of a job. These resources are always numeric and are integer based. A resource can be defined either by either the system, or by the administrator.

    The user must know where the resource is located. Examples of this include global and host resources. The global resource is tracked in the entire system. For example, it can be used to simulate tracking of licenses. A host resource is local and specific per host.

    The format of this string is:

    type.name=quantity[,[type.name=quantity…]

    Examples

    Reserves 200MB of memory on the host
    % qbsub --reservations "host.memory=200" set

    Reserves at least 1 processor and up to all processors on a host
    % qbsub --reservations "host.processors=1+" set

    Reserves from 1 to 20 processors on a single host
    % qbsub --reservations "host.processors=1-20" set

    Reserves a global resource called maya
    % qbsub --reservations "global.maya=1" "maya -batch -render ...."

    ...

    Quantity Syntax

    host.processors=1+ (QB_RESERVATION_INFINITY)
    Dispatch to a worker with at least 1 open slot, then occupy all currently open slots.
    (The
    general form is host.processors=N+, where N is a positive integer).

    "host.processors=1*"  (QB_RESERVATION_ALL)
    Dispatch to a worker with at least N open slots AND and no used slots (i.e. worker must be idle!), then occupy all currently open slots.
    ( The general form is host.processors=N*, where  N  is a positive integer).

    "host.processors=all"  (QB_RESERVATION_ALL):
    Equivalent to above, "host.processors=1*"

    "host.processors=N+M": Dispatch  
    Dispatch to a worker with at least N to M open slots. Upon being dispatched to a worker, it occupies as many slots as it can, up to M, as slots free upbecome available.

    Info

    New in Qube! From version 6.5 on Qube! 6.5 allows for a more "dynamic" evaluation of the "host.processors=1+" or "host.processors=4-8" style of reservations.

    A "1+" reservation used to mean "all the slots", but there was no way to know how many slots it was allocated; there could be a 2-slot job already running on an 8-slot worker, and then the 1+ would just assume that it was getting all 8 slots and the worker would be over-scheduled for as long as both the 2-slot and the 1+ job were running at the same time.

    With Qube! 6.5Now, the reservations as evaluated on each worker at the time the job instance starts on the particular worker. So in the above example, the 2-slot job has already been allocated 2 worker slots, and when the 1+ instance starts, it's allocated the remaining 6 slots.

    Examples

    Reserves 200MB of memory on the host
    % qbsub --reservations "host.memory=200" set

    Reserves at least 1 processor and up to all processors on a host
    % qbsub --reservations "host.processors=1+" set

    Reserves from 1 to 20 processors on a single host
    % qbsub --reservations "host.processors=1-20" set

    Reserves a global resource called maya
    % qbsub --reservations "global.maya=1" "maya -batch -render ...."

    Relevant environment variables

    This will be exposed to the job's running environment as QB_JOBSLOTS=6, (or whatever the value) and stored in the Qube! database in the job's subjob table as "allocations".

    ...