Re: [Lse-tech] [PATCH] cpusets - big numa cpu and memory placement

Eric W. Biederman
2004-10-14T10:41:34Z

"Martin J. Bligh" <mbligh@aracnet.com> writes:

> My main problem is that I don't think we want lots of overlapping complex
> interfaces in the kernel. Plus I think some of the stuff proposed is fairly
> klunky as an interface (physical binding where it's mostly not needed, and
> yes I sort of see your point about keeping jobs on separate CPUs, though I
> still think it's tenuous), and makes heavy use of stuff that doesn't work
> well (e.g. cpus_allowed). So I'm searching for various ways to address that.

Sorry I spotted this thread late. People seem to be looking at how things
are done on clusters and then apply them to numa machines. Which I agree
looks totally backwards.

The actual application requirement (ignoring the sucky batch schedulers)
is for a group of processes (a magic process group?) to all be
simultaneously runnable. On a cluster that is accomplished by having
an extremely stupid scheduler place one process per machine. On a
NUMA machine you can do better because you can suspend and migrate
processes.

The other difference on these large machines is these compute jobs
that are cpu hogs will often have priority over all of the other
processes in the system.

A batch scheduler should be able to prevent a machine from being
overloaded by simply not putting too many processes on the machine at
a time. Or if a higher priority job comes in suspending all of
the processes that of some lower priority job to make run for the
new job. Being able to swap page tables is likely a desirable feature
in that scenario so all of the swapped out jobs resources can be
removed from memory.

> It all just seems like a lot of complexity for a fairly obscure set of
> requirements for a very limited group of users, to be honest.

I think that is correct to some extent. I think the requirements are
much more reasonable when people stop hanging on to the cludges they
have been using because they cannot migrate jobs, or suspend
sufficiently jobs to get out of the way of other jobs.

Martin does enhancing the scheduler to deal with a group of processes
that all run in lock-step, usually simultaneously computing or
communicating sound sane? Where preempting one is effectively preempting
all of them.

I have been quite confused by this thread in that I have not seen
any mechanism that looks beyond an individual processes at a time,
which seems so completely wrong.

Eric