Stephan Grell's Weblog
Stephan Grell's Weblog

20050811 Donnerstag August 11, 2005

N1GE 6 - Scheduler Hacks: consumables as load threshold

This feature is new to N1GE 6 and can be quite powerful, if used correctly. One could model similar behavior earlier with custom load sensors and load adjustments but this is now much more reaktive, build in and easier to use. One could also find similarities to the subordinate queues. However, this solution is much more generic. It takes any consumable while the subordinate queues are fixed on slots.

To use this feature one has to create a consumable, assign it to a host or the global host and pick a queue which should be in alarm state, when a certain amount is consumed. Assuming that one assigns 5 licenses to a host, and the queue instance should go into alarm state, when 2 licenses are consumed, one would set:

>qconf -mc
licence lic int <= YES YES 0 0

>qconf -me test_host
complex_values lic = 4

>qconf -mq test.q
load_thresholds lic = 3

This is all that is needed. If now two jobs requesting lic are running on the all.q on the test_host, the test.q will go into alarm state and no further jobs will be started in that queue.

As one can see, this allows very complicated scenarios and a new way of handling job priorities and subordinating queues independly of the number of used slots.

Important:
An important difference is the possible definition of the consumable with is used as a load_threshold on queue level. This is not possible with load values.

I am sure it will take a while to play with this feature before useful scenarios are obvious.

( Aug 11 2005, 01:34:34 PM CEST ) Permalink Kommentare [1]

Trackback URL: http://blogs.sun.com/sgrell/entry/n1ge_6_scheduler_hacks_consumables
Kommentare:

We use this to manage our quad cpu desktops. During the day, we reserve one of the four cpus for the user. At night, we allow the queue system to use all of them.
We set up a 'duplicate' slots complex named slotsm which is set by our load_sensor
The load_sensor adjusts slotsm to 'slots-1' during the day, and to 'slots' at night.
To get the proper number of 'available' queue slots, we just set the load_threshold to 0 for slotsm.
Works pretty well!!
(We could have set slots=1 as the alarm - but we also have single and dual cpus. Also some machines we want to reserve two cpus for the user - it was easier to manage the slotsm from the load_sensor side than from the load_threshold of the queue)
So it seams like non-consumables load_thresholds are 'upper limits' (ie np_load_avg) and consumables load_thresholds are 'lower limits' (licenses or slots)

Gesendet von John Tseng am März 23, 2006 at 10:13 PM CET #

Senden Sie einen Kommentar:

Name:
E-Mail:
URL:

Ihr Kommentar:

HTML Syntax: Ausgeschaltet

Archive
Sprache
Links
Referenzierte URLs