[GE users] preemption and consumables

Serge Nosov serge.nosov at gmail.com
Fri Oct 10 02:39:26 BST 2008

    [ The following text is in the "ISO-8859-1" character set. ]
    [ Your display is set for the "ISO-8859-10" character set.  ]
    [ Some special characters may be displayed incorrectly. ]


My cluster consists of 4-core machines. There are two queues in the cluster:
"long" and "short". "long" is subordinate to "short".
To fully utilize all the cores, I set up 4 slots for each queue on each
system. To avoid oversubscribing of the resources, I set up a consumable
"memory". Each host has 16g of "memory" and each job by default uses 4g.
This way no more than 4 jobs using 4g or "memory" are allowed to run on any
node. The problem arises, however, when a job is submitted to a "short"
queue to a node that runs 4 "long" queue slots. I want the short job to
preempt one of the long jobs. This does not happen because there is no more
'memory" consumable available. So the short job ends up waiting.

If I remove the consumable, preemption starts working. But in this case,
jobs might allocate more memory than there is RAM, causing swapping. What is
the appropriate way to use consumable resources and  preemption?

Also, when preemption does occur, all instances of the "long" queue are
suspended, even though there might only bee one instance on the "short"
queue. Is it possiblle to configure SGE in such a way that it would suspend
only as many instances of "long" queue as there are instances of the "short"
queue, e.g., if 4 long jobs are running and 1 short jobs gets sheduled, then
only 1 long job is suspended?

Thank you,

More information about the gridengine-users mailing list