Difference between revisions of "RQS Common Uses"
m (Reverted edits by 64.217.183.117 (Talk); changed back to last version by Dag) |
(→About Resource Quotas) |
||
Line 9: | Line 9: | ||
* Grid Engine '''''jobs''''' | * Grid Engine '''''jobs''''' | ||
− | A Grid Engine '''''resource''''' can be any predefined or custom complex attribute known to the grid. Popular examples | + | A Grid Engine '''''resource''''' can be any predefined or custom complex attribute known to the grid. Popular examples include <tt>slots, arch, num_proc, mem_free, mem_total</tt>, etc. The command <tt>qconf -sc</tt> 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: <tt>user, queue, host, project, department</tt> or <tt>parallel environment</tt>. Command-line implementation of this new feature is accomplished via the <tt>[http://gridengine.sunsource.net/nonav/source/browse/~checkout~/gridengine/doc/htmlman/htmlman1/qquota.html qquota]</tt> and <tt>[http://gridengine.sunsource.net/nonav/source/browse/~checkout~/gridengine/doc/htmlman/htmlman1/qconf.html qconf]</tt> commands. Resource quota support has also been built into the X11 <tt>qmon</tt> GUI tool. |
== Resource Quota Sets == | == Resource Quota Sets == |
Revision as of 18:33, 28 June 2007
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 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.
Resource quota syntax and rule sets behave and are processed very much like firewall rules on Linux systems -- individual rules defined within a set are evaluated in the order in which they have been defined -- the first rule that matches a specific request will be used (all other rules after the first match are ignored).
A resource quota set contains the following fields:
- name -- The name of the set
- enabled -- A boolean expression indicating if the set should be used for making scheduling decisions. Acceptable values are true|false and the default value is false.
- description -- Optional string field for describing the set. Defaults to NONE.
- limit rule -- Each set must contain one or more limit rules
- scope filter -- Designate which resource consumers are affected by the quota limit being implemented. Multiple resource consumers can be named and are space separated. Braces "{ }" can be used to list or group individual consumer objects and the "!" character is used to imply NOT.
- resource limit -- The actual rule specifying the actual limit for the resource. Must be an attribute-value pair separated by an "=" sign.
Resource Quota Set structure:
{ name description "NONE" enabled true|false limit <scope filter> to <resource limit> limit <scope filter> to <resource limit> limit <scope filter> to <resource limit> ... }
Resource Quota Set Example:
{ name example_resource_quota_set description "limit slot access to user1 and user2 on every host in the LinuxHosts hostgroup (except penguin03)" enabled true limit users {user1,user2} hosts {@LinuxHosts, !penguin03} to slots=1 }
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 }