On Wed, 18 Apr 2007, Ingo Molnar wrote:
> That's one reason why i dont think it's necessarily a good idea to
> group-schedule threads, we dont really want to do a per thread group
> percpu_alloc().
I still do not have clear how much overhead this will bring into the
table, but I think (like Linus was pointing out) the hierarchy should look
like:
Top (VCPU maybe?)
User
Process
Thread
The "run_queue" concept (and data) that now is bound to a CPU, need to be
replicated in:
ROOT <- VCPUs add themselves here
VCPU <- USERs add themselves here
USER <- PROCs add themselves here
PROC <- THREADs add themselves here
THREAD (ultimate fine grained scheduling unit)
So ROOT, VCPU, USER and PROC will have their own "run_queue". Picking up a
new task would mean:
VCPU = ROOT->lookup();
USER = VCPU->lookup();
PROC = USER->lookup();
THREAD = PROC->lookup();
Run-time statistics should propagate back the other way around.
> In fact for threads the _reverse_ problem exists, threaded apps tend to
> _strive_ for more performance - hence their desperation of using the
> threaded programming model to begin with ;) (just think of media
> playback apps which are typically multithreaded)
The same user nicing two different multi-threaded processes would expect a
predictable CPU distribution too. Doing that efficently (the old per-cpu
run-queue is pretty nice from many POVs) is the real challenge.
- Davide
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]