RQS Common Uses
Note: this is a draft page where I'm trying to document probable common use cases for the new Resource Quota Syntax that will appear in Grid Engine 6.1. Don't link to this yet :) --Dag 11:54, 20 December 2006 (EST)
Contents
About Resource Quotas
The Resource Quota feature allows administrators to apply limits to:
- Grid Engine resources
- Grid Engine resource consumers (individual consumers or groups of consumers)
- Grid Engine jobs
A Grid Engine resource can be any predefined or custom complex attribute known to the grid. Popular examples would include slots, arch, num_proc, mem_free, mem_total, etc. The command qconf -sc will list the currently configured attributes. Specific information on complex attributes can be found within the . A Grid Engine resource consumer is one of the following: user, queue, host, project, department or parallel environment. Command-line implementation of this new feature is accomplished via the qquota and qconf commands. Resource quota support has also been built into the X11 qmon GUI tool.
Resource Quota Sets
Resource quotas are configured and defined as sets. Any set can contain one or more resource quota limits. The grid engine scheduler considers all configured sets all of the time and if multiple sets are found, the most restrictive set wins.
Per User Limits
Global limits on maximum user jobs
It is now possible to set limits on a per-user basis rather than just having one global value that affects everyone.
{ name max_per_user description "per user rule sets" enabled TRUE limit users dag to slots=1 }
Max user jobs in a particular queue
Note that the keyword "queues" refers to a Grid Engine cluster queue
{ name max_per_queue description NONE enabled TRUE limit users dag queues all.q to slots=2 limit users dag queues testQueue to slots=1 }
Max user jobs on a particular execution host
{ name max_per_host enabled TRUE limit users dag hosts chrisdag-laptop to slots=2 }
The RQS Design Specification document contains the following more complicated example:
- All users together should never take more than 20 slots
- All users should maximal take 5 slots on all linux hosts
- Every user is restricted to one slot per linux host, only user "roland" is restricted to 2 slots and all other slots on hosts are set to 0
In that case, the ruleset would look like this, note that "@linux" is a predefined hostgroup:
{ name maxujobs limit users * to slots=20 } { name max_linux limit users * hosts @linux to slots=5 } { name max_per_host limit users roland hosts {@linux} to slots=2 limit users {*} hosts {@linux} to slots=1 limit users * hosts * to slots=0 }