Keeping single slot jobs off of certain nodes
In this thread, Paul asks:
"I'm looking at finding a way to either limit single-slot jobs, or requiring all jobs in a given queue to be running in a pe. Specifically, I have some SMP nodes, that I'd rather not waste on single thread, and also keep the single thread jobs off of the infiniband connected nodes. I have gigE small cpu count nodes for this task."
Dan replied with another example of clever use of the new SGE Resource Quota syntax within SGE 6.1 and later:
You can use resource quota sets to restrict non-PE jobs to certain queues hosts.limit pes !* hosts @smp to slots=0
Slick!
Be careful with your RQS syntax
I believe pretty strongly that the 6.1 release is going to be a big deal, primarily because the new Resource Quota support in Grid Engine 6.1 is going to take a solid whack at a whole bunch problems and issues that SGE admins have been bothered by for years.
The nice clean resource quota syntax is going to replace entire bodies of clever hacks and workarounds that the developers, users and community have created. Many of the kludgy-yet-clever hacks involving the intentional (ahem...) misuse of custom parallel environment objects and dedicated queues will simply become obsolete.
RQS is going to take some getting used to, however as this mailing list discussion thread makes clear.
Now that people outside of the developer community are putting RQS through its pace it is becoming easier to spot areas where documentation can be improved and/or fixed. The discussion referenced above provided a great example, one that I'll turn into a little quiz for the reader:
What is the difference between the following 2 resource quota sets?
{
name peruser_limit
enabled TRUE
limit users * to slots = 10
}
{
name peruser_limit
enabled TRUE
limit users {*} to slots = 10
}
The answer after the jump ...
Well this was not much of a quiz since the answer is contained in the mailing list thread but I'll summarize it here:
users * -- Means "apply limit globally across ALL users"
users {*} -- Means "apply limit INDIVIDUALLY to EACH user"
Something to think about as you start writing rule sets for 6.1!
Enhanced dynamic limits in the new resource quota system
A bit of interesting news via the GE issues mailing list recently concerning the newly announced "Resource Quota" feature that will be part of the upcoming Grid Engine 6.1 release. The specification document for the new Resource Quota facility makes specific mention of "dynamical limits". The specific example of a given "dynamical limit" is the following:
limit hosts {@linux_hosts} to slots=$num_proc*5
... that limit would change from machine to machine depending on the number of CPUs resident in each machine. Useful.
Roland filed (and then fixed!) a new issue asking for this functionality to be extended to allow the following types of usage:
'slots=$num_proc*2-1' or slots=$num_proc*2+2'
The new enhancements extend the operators that can be used for defining these new limits. This enhancement also applies to load_formula syntax as well due to a shared codebase. The new syntax definition looks like this:
{w1|$complex1[*w1]}[{+|-}{w2|$complex2[*w2]}[{+|-}...]]

XML Feeds