bug-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Confusion about where to go in Hurd


From: olafBuddenhagen
Subject: Re: Confusion about where to go in Hurd
Date: Wed, 1 Aug 2007 18:42:43 +0200
User-agent: Mutt/1.5.16 (2007-06-11)

Hi,

On Thu, Jul 26, 2007 at 01:33:12PM +0200, Anders Breindahl wrote:

> I recall something about fork()s being expensive on the Hurd/Mach, and
> that someone ran tests that showed 500forks per second versus a
> somewhat larger figure on Linux.

The "somewhat larger figure" was actually something like two orders of
magnitude IIRC...

Of course, that doesn't say anything about how much of a problem this
really is to overall system performance. It might be responsible for the
slowness of compile jobs, but who knows.

> Is that speed also a question of optimization, or does it have
> anything to do with inherent problems of the microkernel design?

A bit of both AIUI... But I don't really know the reasons.

> That's saying Mach is adequate, right?

Well, adequate for what? I'm very confident that it's good enough to get
a usable system. But if you want to get performance in a similar range
as highly optimized monolithic systems, very fundamental changes are
inevitable.

> If so, what actually is the problem with Mach being a first-generation
> microkernel?

Aside from general overhead caused by Mach's complexity, the main
problem seems to be that with part of the mechanisms being in the
kernel, and part in user space, it's extremely hard to get proper
resource management. That would require either doing almost everything
in the kernel like on monolithic systems, or doing almost everything in
user space like with second-generation microkernels.

I'm not convinced that proper resource management is really necessary
for the system to be usable, though. Some half-hearted workarounds
should be sufficient for now -- after all, none of the popular
mainstream systems really do better than that...

-antrik-




reply via email to

[Prev in Thread] Current Thread [Next in Thread]