
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
Trackback URL: http://blogs.sun.com/sgrell/entry/n1ge_6_scheduler_hacks_consumables
|
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 #