Re: is RSDL an "unfair" scheduler too?



[what happened to the 'To' header?]

David Schwartz wrote:
I didn't suggest adding any unfairness! I suggested being fair by
user/job/process instead of being fair by thread (which is actually
unfair as it favors multi threaded processes over single threaded
processes).

Wouldn't that be unfair because it favors multi-user approaches over
single-user approaches with the same number of processes?

Consider two otherwise equivalent web server designs. They both use a helper
process owned by the user who owns the file the web server is sending. One
does a lot of work in the helper process, the other does very little. A
"fair by user" scheduler would give the approach that puts more work in the
helper process more CPU than the one that puts little work in the helper
process.

A fairly contrived example, but I see your point. Of course any system can be broken. I think that user-level scheduling is good for real multi user systems, where 'user' means a person, not an artificial entity. It's also good for a multi application server, where typically each service runs (or can be made to run) as a separate user.

Being fair by user builds lots of assumptions into the scheduler. When
they're not true, the scheduler becomes sub-optimal. For example, consider a
web server that runs two very important tools, 'foo' and 'bar'. Rather than
running them as root, they run as users 'foo' and 'bar' for security. "Fair
to user" would mean that just because most other people are using 'foo', I
get less CPU when I try to use 'foo', because the OS doesn't know the "real
user", just the fake user who owns the process -- a security decision that
has no relationship to fairness. This would be handled perfectly by a "fair
to process" approach.

Perhaps we need a scheduling class instead, defaulting to each user being in its own class, and system processes in another (or maybe more than one) class. Root can configure the relative priorities of the various classes according to preferences.

As for favoring multi-threaded processes over single-threaded processes,
sometimes that's what you want. Consider two servers, one using thread per
job the other using process per job. Does it make sense to give the "process
per job" server as much CPU to do a single task as the "thread per job"
server gets for all the clients it's dealing with?


That's why I wanted the job abstraction, which currently isn't communicated to the kernel (or at least not well). Within a user's quota, jobs are scheduled fairly.

It's really more important that the scheduler be tunable and predictable.
That way, we can tell it what we want and get it. But the scheduler cannot
read our minds.

For multiuser systems, it also has to provide predictable response to unpredictable loads. RSDL accomplishes part of this by removing heuristics. User-level scheduling does more by limiting the impact of a single user to 1/N of the system's cpu capacity, and similarly limits the impact of a single job to 1/number_of_active_jobs_for_this_user.

--
error compiling committee.c: too many arguments to function

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



Relevant Pages

  • Re: CUPS Server Error
    ... # This is the CUPS configuration file. ... Server Identity ... determines whether the scheduler will allow new printers ... whether or not to use "short" names for remote printers ...
    (Debian-User)
  • Re: Application design question
    ... doesn't the 'scheduler' (for want of a better ... the client rather than the server. ... Does the screen just continually poll the ...
    (microsoft.public.dotnet.languages.csharp)
  • Re: Server process stalled during massive thread creation : scheduler problem ?
    ... i just realized a behaviour of the scheduler that gets me thinking... ... i run a server process that accepts ... TCP connections, and after a client has connected, just echoes all the ... When the load generator starts 1000 threads simultanously, ...
    (Linux-Kernel)
  • RE: Web Service SSL
    ... Subject: Web Service SSL ... but when executing through the task scheduler is still hangs. ... many https/ssl site is using a server certificate that is not ...
    (microsoft.public.sharepoint.portalserver.development)
  • Re: small bit of new GTL info...... some new screenshots...
    ... Find a decent nearby server and the multi on racemore ... This should be in every multiplayer game... ... Yep, when simbins lobby goes down, every client on every multiplayer server ...
    (rec.autos.simulators)