Qube!'s reservation system is important for correct management of host resources. This is accomplished with the relationship between reservations and resources.
Each host has a list of resources including system resources such as memory and number of processors. It also includes user-specified resources. Resources are integer based (meaning '1' and '99' are valid resource counts; 'a' and '4.5' are not) and automatically decrement/increment upon acceptance of a job. A resource can be "discovered" by the system (eg, number of cores) or defined by admins (eg, number of licenses).
The user must know whether the resource is global or host-based (see global and host resources). Global resources are tracked through the entire system. For example, the tracking of licenses. A host resource is local and specific to each host, for example the number of cores.
Resources are defined and reserved through this syntax:
type.name=quantity[,type.name=quantity…]
This appears on the Supervisor (for global resources, see supervisor_global_resources), on the host (for host-based resources, see worker_resources) and/or in the job submission UI in the reservations field.
Quantity Syntax
host.processors=1+
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*
Dispatch to a worker with at least 1 open slot 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
Equivalent to host.processors=1*
host.processors=N+M
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 become available.
Examples
Reserve 200MB of memory on the host
% qbsub --reservations "host.memory=200" set
Reserve at least 1 processor and up to all processors on a host
% qbsub --reservations "host.processors=1+" set
Reserve from 1 to 20 processors on a single host
% qbsub --reservations "host.processors=1-20" set
Reserve 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".
See Also