|
View:
New views
6 Messages
—
Rating Filter:
Alert me
|
|
|
|
|
|
Re: Confusion about where to go in HurdOn 200707252117, Michael Casadevall wrote:
> First, I think its very important to clarify the terms Hurd and mach > Mach - the underlying microkernel used by all versions of Hurd > > Hurd - the userland translators which snap into the kernel providing > userland services, and (in theory) are microkernel independent > > Hurdng - the project of porting hurd translators to another microkernel > beside mach such as L4. Thanks for clarifying. For myself, those terms weren't a problem, though. The clarification about userland drivers being nothing like userland translators was however needed. > Mach itself is actually pretty much feature complete and fairly stable. An > older version (mach3 vs. mach4) provides the kernel of Mac OS X. The main > reason parts of Hurd are slow and such is that code in the translators > (such as the pager code in ext2fs) haven't been optimized. 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. Is that speed also a question of optimization, or does it have anything to do with inherent problems of the microkernel design? > > I have come to understand that key individuals within the Hurd community > > are less than satisfied with patching up Mach. And with good reason. But > > also that there is a despair of heirs to Mach. Nothing adequate with a > > usable license seems available, right? > > The problem with mach is that it is a first-generation microkernel. mach3 > had problems with translators taking a very long time due to performance > and IPC issues, but mach4 (which was the basis of GNU mach) worked around > the issue with providing co-location (a mechanism where translators go > right into kernel space) and shuffling which, while not completely > solving the problem, they reduce it considerably to the point its more or > less a non-issue in current releases. If so, what actually is the problem with Mach being a first-generation microkernel? [Embedded systems:] > and writing a kernel is not an easy task (I've never tried it; the most I > did was write single-use programs for use on said board). Coincidentally, me too. > > This should also lessen fear of performance issues with the Hurd. Linux > > already is big enough to have a certain umph in hardware design, and if > > stability-, scalability- and maintainability-oriented users start to use > > Hurd, support from the chip vendors will probably catch up. (Like it > > does with hardware virtualization technologies, these days). > > > > It took many, many years for this to happen to Linux. I doubt we'll be > seeing this for hurd anytime soon. But that doesn't influence that it could happen (and by business logic should). > I'm not sure how to help the issues, but on these lists, everyone > are equals to me (which hopefully I prove by spending over 2 hours > drafting this response :-)). Thanks for taking the time. Regards, skrewz. |
|
|
Re: Confusion about where to go in HurdHi,
On Wed, Jul 25, 2007 at 09:17:49PM -0400, Michael Casadevall wrote: > Hurdng - the project of porting hurd translators to another > microkernel beside mach such as L4. That is not fully correct. The original port to L4 was simply named Hurd/L4 -- which is exactly what it was: A port of the existing Hurd design to a different microkernel. Later, when the original Hurd/L4 architects embraced Coyotos and suggested a total departure from the original Hurd design (and in fact, also from its goals...), still calling it "Hurd" no longer seemed appropriate -- so someone came up with ngHurd. (Oddly, most others picked that up as "Hurdng", which is ugly IMHO, and doesn't make any sense if you spell out the "Hurd" acronym...) Althogh it got muddled down later on, I think it is important to distinguish between the traditional Hurd, be it on Mach or ported to some other microkernel; or some kind of ngHurd, with a fundamentally different design. > Mach itself is actually pretty much feature complete and fairly > stable. An older version (mach3 vs. mach4) provides the kernel of Mac > OS X. The main reason parts of Hurd are slow and such is that code in > the translators (such as the pager code in ext2fs) haven't been > optimized. Well, that is only partially true: Nobody has ever really profiled it; but my guess is that the slowness of disk I/O is indeed caused by lack of optimisation in some Hurd components. Yet once these worst problems are fixed, I'm pretty sure that slowness of Mach IPC would immediately take the place as the main source of system slowness... > (I've only had one true kernel panic in serveral months of running > Hurd in a VM (on an experimental kernel); When the system seems to > freeze completely, it usually is a deadlock or translator issue Indeed, most hangs nowadays seem to be caused by some locking issues in ext2 or diskfs. (Though personally I haven't experienced any in a while...) > That being said, device drivers are handled by the microkernel under > Hurd. The best way to explain this is that Hurd ran on L4 and mach, > and L4 supported device A and mach supported A and B, the translators > would be able to use whatever the underlying kernel supported. That's not true. While Mach has all the drivers in kernel space, and it's not clear whether trying to change that would result in any success, L4 is clearly designed for user space drivers; putting them in the kernel is totally out of question here. > The problem with mach is that it is a first-generation microkernel. > mach3 had problems with translators taking a very long time due to > performance and IPC issues, but mach4 (which was the basis of GNU > mach) worked around the issue with providing co-location (a mechanism > where translators go right into kernel space) and shuffling which, > while not completely solving the problem, they reduce it considerably > to the point its more or less a non-issue in current releases. Well, co-location basically means putting everything back in kernel space -- the components are only formally separated, but they all run in the same protection domain. While this might be OK for NeXTstep/MacOS X, which aren't true microkernel systems anyways, it's not an option for a true microkernel system like the Hurd, which actually relies on the separation. Also, I don't think co-location buys that much performance. The time used for actually switching between user space and kernel space is neglectible compared to the overhead of the IPC code in Mach. >> By the way, from the name, a microkernel seems to be something easy >> to write. Could somebody please outline to me (and others with my >> knowledge of the field) why this isn't the case? I suspect that it >> isn't so much about actually writing the thing, but more about >> knowing what it is that one wants to write? >> > > The problem steams from the fact that very few programmers have the > low level knowledge to write a program that can run from boot to > provide a real userland. No, that's not really the problem. While the knowledge about these things is not very widespread, the actual implementation is pretty straightforward stuff. What is not straightforward are the fundamental design decisions. >> Which Alfred also mentioned in that the ams-branch -- in his opinion >> -- didn't get any effect upstream. >> > That is in regards to glibc; No, ams-branch is in the main Hurd repository. -antrik- |
|
|
Re: Confusion about where to go in HurdHi,
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- |
|
|
Re: Confusion about where to go in HurdHi,
olafBuddenhagen@..., le Wed 01 Aug 2007 18:30:20 +0200, a écrit : > > The main reason parts of Hurd are slow and such is that code in > > the translators (such as the pager code in ext2fs) haven't been > > optimized. > > Well, that is only partially true: Nobody has ever really profiled it; > but my guess is that the slowness of disk I/O is indeed caused by lack > of optimisation in some Hurd components. There is indeed no e.g. staircase block scheduler on the path from ext2fs to Mach drivers... Samuel |
|
|
Hurd/L4 HistoryAt Wed, 1 Aug 2007 18:30:20 +0200,
<olafBuddenhagen@...> wrote: > On Wed, Jul 25, 2007 at 09:17:49PM -0400, Michael Casadevall wrote: > > > Hurdng - the project of porting hurd translators to another > > microkernel beside mach such as L4. > > That is not fully correct. The original port to L4 was simply named > Hurd/L4 -- which is exactly what it was: A port of the existing Hurd > design to a different microkernel. The idea of using L4 was proposed even earlier by Okuji. He created the l4-hurd mailing list in November 2000. I don't think he got any further than simply suggesting it as an alternative to Mach and doing some reading. I started the original Hurd/L4 port while I was at Karlsruhe in 2002. My intention was to adapt the Hurd to exploit L4's concepts and intended design patterns; it was not to simply provide a Mach compatibility layer on top of L4. When I left Karlsruhe, I no longer had access to Pistachio as I was unwilling to sign an NDA. Although the specification was available, the Karlsruhe group only released their code in May 2003 [1]. Around this time, Marcus began hacking on Pistachio. He created a relatively complete run-time. I didn't really become involved again until the second half of 2004, after I complete by Bachelors degree. > Later, when the original Hurd/L4 architects embraced Coyotos and > suggested a total departure from the original Hurd design (and in fact, > also from its goals...), still calling it "Hurd" no longer seemed > appropriate -- so someone came up with ngHurd. (Oddly, most others > picked that up as "Hurdng", which is ugly IMHO, and doesn't make any > sense if you spell out the "Hurd" acronym...) Before Marcus and I considered Coyotos, we had already rejected some parts of the Hurd's design. The resource management problems were what prompted me to look at L4. Also, some of the problems with translators were already well-known to us. (For a more detailed description of the problems we have identified, see our paper in this month's SIGOPS OSR [2]. We have also written a forward-looking position paper [3].) We visited Jonathan Shapiro at Hopkins in January 2006. This resulted in a number of discussions, some quite influential, and not always in a way which aligned our position with that of Jonathan's. This was particularly true of a number of security issues. Hurd-NG, as we originally called it, was an attempt to articulate the system that we had come to envision in terms of interfaces and description of the system's structure. The new name was selected, if I recall correctly, as it clearly wasn't the Hurd nor the Hurd based on L4. Neal [1] https://lists.ira.uni-karlsruhe.de/pipermail/l4ka/2003-May/000345.html [2] http://walfield.org/papers/200707-walfield-critique-of-the-GNU-Hurd.pdf [3] http://walfield.org/papers/20070104-walfield-access-decomposition-policy-refinement.pdf |
| Free embeddable forum powered by Nabble | Forum Help |