Was Moore's law, now something else, parallelism
Mark Woodward
markw-FJ05HQ0HCKaWd6l5hS35sQ at public.gmane.org
Tue Jul 13 14:40:31 EDT 2010
On 07/13/2010 10:28 AM, Edward Ned Harvey wrote:
>> From: discuss-bounces-mNDKBlG2WHs at public.gmane.org [mailto:discuss-bounces-mNDKBlG2WHs at public.gmane.org] On
>> Behalf Of Mark Woodward
>>
>> Maybe its an OS issue? Like the RAID process described above, operating
>> systems have to become far more modular and parallel to benefit.
>>
> You mean more modular and parallel than what? They already support SMP (for
> years since) and virtualization and hyperthreading... How do you mean more
> modular?
>
This is a complex discussion, to keep it simple I will use several vague
generalities, so understand that I know there are threads used by the
Linux kernel and there are no true absolutes here. That said, the
problem with monolithic kernel design is that they are designed
primarily and conceptually as an API library for applications. An
application execs a kernel call, the function jumps into kernel code,
executes the API code, and returns a value.
In the multiple processor paradigm, a task will place its request in a
message queue which will be read by a user space process, that process
will execute the code, and place the result in the message. On a highly
parallel system multiple CPUs/threads will be executing.
While there is more work in the second example, the overall throughput
of the second example will be higher in a highly parallel system.
>
>
>> That
>> whole user-space micro-kernel process stuff doesn't sound so useless
>> now. Monolithic/Modular kernels ruled as CPU cores were scarce.
>>
> They still rule now. Is there some alternative that doesn't use a
> monolithic or modular kernel? I don't know of any other option...
>
The point I'm making is that monolithic kernels will not perform as well
as micro-kernel designs when there are many many CPUs.
>> With
>> many multiple CPUs, there is actually REAL benefit that can be taken
>> from it. Also, old truisms may now becoming wrong. A user space process
>> for handling services should now be effectively more efficient (in
>> operation) than kernel based ones as long as resource access and
>> contention are managed well.
>>
> Now this one, I am completely missing. How on earth can anything in user
> space be *more* efficient than in kernel space?
>
> I could see it, if you were saying "just as efficient" ... but "more"
> efficient?
>
The phrase you missed is "effectively more efficient." Meaning, yes you
are right it won't be as purely efficient, however, in practice, by
parallelizing the work, we may lose, lets say something bad, 50%
efficiency over a single kernel API, but by spreading the work across
multiple abundant CPUs and decoupling the work from the client thread,
we could substantially increase the throughput of the system.
More information about the Discuss
mailing list