RQS Common Uses

From GridWiki
Revision as of 14:34, 2 April 2007 by Dag (talk | contribs) (Resource Quotas - new for SGE 6.1)
Jump to: navigation, search

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)


Resource Quotas - new for SGE 6.1

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.

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:

  1. All users together should never take more than 20 slots
  2. All users should maximal take 5 slots on all linux hosts
  3. 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
}