
On May 12, Andreas Savva loaded a tape reading:
Karl,
To use the example in the teleconference, all I want to do is be able to make the distinction between the following statements in the resource description : 1. X CPUs any way you can 2. X CPUs on the same machine 3. X CPUS on the same machine and that's all that machine should have
and similarly for memory, for example.
I take a very narrow, perhaps simplistic view, that this is merely syntax. And so find it very hard to accept arguments that effectively come down to saying that making the distinction between statement 1 and 2 is good and making the distinction between statements 2 and 3 is not.
Andreas
The distinction of 1 vs. 2 and 2 vs. 3 are not even on the same conceptual "axis"! We already have the ability to allocate whole clusters of nodes so there is: 1. X CPUs any way you can 2. X CPUs in some complex partially constrained topology 3. X CPUs on one host and the notion of "I got all CPUs on the/each host" is an orthogonal question demanding an orthogonal syntax. I think all 6 combinations are meaningful in the abstract: 1. any way you can and I mind/don't mind sharing node(s) 2. some complex topology and I mind/don't mind sharing node(s) 3. all on one host and I mind/don't mind sharing the host Clearly, one does not demand that they get all hosts in the cluster, e.g. if they get the M nodes they want they do not care if they were allocated from a larger pool of P nodes. At least, no scheduler makes this an explicit mode of "get all nodes" versus "get N and I just so happen to know that N=P". This distinction you are after is of the same vein---did I get all CPUs per node or just _enough_ CPUs to match my constraint. I am sure we can model this concept with another "total/partial" or "shared/unshared" attribute in the resource clause, but I am less sure that this is actually a good concept to model. As I said in the previous message, I do not really see how to separate it cleanly from the application model. What does it mean to share or not share the node? Except in your extreme case of loading an OS image (clearly, not a POSIX app), and some old Cray computers that didn't really timeshare, even a supposedly dedicated compute node usually has some other system processes on it that are not part of the job! Where is the line drawn between "background system processes I will ignore" and "other processes that annoy me"? I think this requires some more precise QoS terminology in the job description. karl -- Karl Czajkowski karlcz@univa.com