
Given the discussion below, it does make me wonder whether we need an Exclusive boolean in the Resource section. I also don't see the problem in keeping CPUCount as is ... it just won't make any sense for my use cases, as Karl says. :-) -- Chris On 20/4/05 03:22, "Karl Czajkowski" <karlcz@univa.com> wrote:
On Apr 20, Andreas Savva loaded a tape reading:
My requirement is very simple. If I ask for a 2-way SMP machine I want a 2-way SMP machine and nothing else. It is not a preference. Consider that I may want to run software specifically tuned to some configuration (cpu, ram, and so on) and I don't want the system to be 'helpful' and give me something that it thinks is better for me. Unless I tell it so by using a range expression.
I cannot help thinking you have made some assumption of exclusivity or free-reign and it is keeping you from seeing what is confusing us. I think I (and Chris) have had an assumption that resource requirements are a request for allocation, and these allocations MAY always be a portion of a larger (shared) resource. For us, allocation is a virtualization of resources: allocating 2 cpus from a 4-way SMP should nearly always be indistinguishable from allocation of 2 cpus from a 2-way SMP. That's a scheduler/admin prerogative.
Placing your job on a 4-way SMP does not imply that you have access to 4 CPUs. If you asked for exactly 2 CPUs per resource, I understand LSF might well allocate you 2 from a 4-way node if it wants to. This is not to give you a "better" resource but because it is the "closest sufficient fit" that the scheduler could find for whatever reasons it has. You would be violating the scheduler's allocation decision if you somehow used more than 2 of those CPUs. Some schedulers might enforce the allocation with dynamic OS partitioning directives etc. while others might require cooperative behavior from the application and penalize violations through social or accounting means.
Going the other way should not happen in my book: I cannot allocate you 4 CPUs on a 2-way SMP. I don't know if Chris or other throughput-oriented folks may disagree on that point. I suppose you could "allocate" 4 1 GHz virtual CPUs on a 2-way SMP with 2 GHz CPUs... :-)
If I am charitable and assume I am completely misunderstanding you above, I understand your requirement to express hardware selection as a very advanced or esoteric performance requirement, e.g. your selection of exactly 2-way nodes somehow implicitly selects for a cache or bus architecture, local process scheduler behavior, etc. I could then see wanting to exactly select physical RAM sizes (effects cache associativity and miss rates) or any other attribute in the same way. I did not think such selection of resource properties beyond the reach of the allocation requirements was in scope.
It is not something that I (nor Chris, I am guessing) was expecting to express. We figured that by the time you are making such specialized selection criteria you are probably choosing nodes by name or type using the hostname mechanism or something weirder and even more site-specific.
...
Not sure what was ambiguous; maybe the "I would accept.." part? Perhaps I should say instead that the above fragment to me means "I want a host with at least 2 cpus."
This is exactly the confusion. "I want a host with X" is ambiguous because there exists hosts with X but you do not "get" hosts. You "get" allocations X from a host with X or from a host with Y>X.
karl