From owner-freebsd-questions Mon Feb 18 3:43:42 2002 Delivered-To: freebsd-questions@freebsd.org Received: from hawk.mail.pas.earthlink.net (hawk.mail.pas.earthlink.net [207.217.120.22]) by hub.freebsd.org (Postfix) with ESMTP id 7C2C837B400 for ; Mon, 18 Feb 2002 03:43:30 -0800 (PST) Received: from pool0015.cvx40-bradley.dialup.earthlink.net ([216.244.42.15] helo=mindspring.com) by hawk.mail.pas.earthlink.net with esmtp (Exim 3.33 #1) id 16cmCa-0000U9-00; Mon, 18 Feb 2002 03:43:25 -0800 Message-ID: <3C70E8B2.168D9F56@mindspring.com> Date: Mon, 18 Feb 2002 03:42:42 -0800 From: Terry Lambert X-Mailer: Mozilla 4.7 [en]C-CCK-MCD {Sony} (Win98; U) X-Accept-Language: en MIME-Version: 1.0 To: Anthony Atkielski Cc: FreeBSD Questions Subject: Re: in-kernel HTTP Server for FreeBSD? References: <20020217143343.41758.qmail@web21104.mail.yahoo.com> <20020217163045.GB90303@voi.aagh.net> <3C703089.AD03554B@mindspring.com> <018501c1b816$2a9cb970$0a00000a@atkielski.com> <3C705564.E1EA2FDA@mindspring.com> <001c01c1b859$6ee18c80$0a00000a@atkielski.com> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Sender: owner-freebsd-questions@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG Anthony Atkielski wrote: > Terry writes: > > The obvious rejoinder to your claim is that on > > a resource starved system that is using HTTP > > based system management, once you hit resource > > starvation, your management of the system which > > would enable you to recover from the failure > > situation is impossible, unless that management > > is immune from said stavation (e.g. by being in > > the kernel). > > HTTP-based system management is an unnecessary gadget. This is your unbacked opinion, and it runs contrary to market opinion. > A simple terminal session is more efficient and reliable. This is also your opinion. Effeciency is not measured soley in number of keystrokes -- though being efficient will not necessarily mean that the number of keystrokes increase. Effciency is a product of the learning curve vs. training requirements vs. critical task performance vs. "the warm fuzzies". If something has a sharp learning curve (and command line interfaces have this), then dropping someone in raw tends to not get the best results for a while. Yes, we all like to believe that we are members of some elite above average intelligentsia for having managed to learn something that other people do not know, but in fact, that's just human ego. Training requirements are also an issue. It is not some cosmic coincidence that employers ask for experience with Microsoft products. This is because the average training cost per seat for computer using jobs for common business roles, according to IDC, is US$2,500. Existing familiarity with applications written to conform to the "Windows Style Guide" means that you are familiar with the operating principles, if not the details, of any new application which also conforms. Businesses want to be able to plug in a replacement from a temporary agency, and businesses want to pay for the value of knowledge, rather than paying some premium based on its scarcity. By far, the most important issue is the ability to start from scratch and perform the critical tasks necessary to get minimum value out of a product. There is no magical serendipity involved in the little pictures on the document feeder for photo copiers showing which side is up, or the fact that the default when you press the green button is to make one single-sided copy (the most common operation, and an operation which can be substituted for all others, if need be by turning one two sided sheet into two one sided sheets, etc.). And "the warm fuzzies", though tangible only in survey of the confidence of the user after performing the task, before committing the results, are nearly as important as the ability to hit the ground running with the product. I really think that what you need is to visit the usability lab of a large company to see HCI testing over a period of several iterations, so you can understand. > I've never cared for anything that must be managed via > HTTP. That's your taste, which is atypical, given that you are an atypical user. Most devices that can be managed via a Web UI can also be managed through at least one more method. The last product I worked on for a commercial vendor had four methods, and the product before that had six. Your response here is a bit unsupportable, since it was your implication of "must". > That's one reason why I don't like IIS. Again, your taste, and your implication. I know of at least two other ways to manage IIS, and I could easily implement other on top of the available, documented framework. > > Finally, yes, it makes sense for a dedicated > > web server to do this; so what? It also make > > sense for any web server where performance is > > an issue, dedicated or not. > > No. If the machine is not dedicated to HTTP, putting such > functions in the kernel unnecessarily complicates and > destabilizes the kernel. More code does not necessarily equal instant instability, particularly in the BSD camps. It takes as much code as it takes, to implement any design. The complication is in your imagination; Julian has already posted that JMB has already used the ng_socket interface to build a proprietary in-kernel HTTP server for a commercial application. Any such module would be compartmentalized, and thus incredibly low risk, particularly if it was written as a result of an engineering process. > In fact, it defeats the whole purpose of an operating system. > The OS is supposed to handle essential functions common to all > users and affecting the entire system; user processes are > supposed to handle applications specific to a user or users. > When OS designers work to improve stability or security, they > tend to move more and more code out into userland; when they > work to get the highest possible score on a benchmark in order > to please the marketroids, they move code into the kernel. I think you are reading from the GNU HURD Bible here, or at least from the microkernel Bible. If you read the introduction to the MACH documentation, you'll notice that they explicitly state that the "micro" in "microkernel" refers to the number of services offered, and not to the amount of code that it takes to implement them. Frankly, if this is your ruler, you are in the wrong place, since FreeBSD is, and always has been, an example of the monolithic kernel paradigm. While it's true that there are a lot of drivers and other subsystems today in kernel modules, modularity does not affect whether or not the resulting system is monolithic or micro. I never expected to get away from the monolithic kernel design, and I'm the author of the original module services in FreeBSD, NetBSD, and OpenBSD. > > PS: People use FreeBSD for dedicated web servers; > > therefore, even if your limitation argument were > > valid, which I don't grant, it makes sense for > > FreeBSD to at least have this facility available. > > People use FreeBSD for dedicated routers, too; so by your > logic, presumably all network and routing daemons should be > moved into the kernel as well. Most of the routing code *is* in the kernel. For routing daemons themselves, that would mean eliminating a significant latency in response, which would subsequently result in a reduction of pool retention time for routing packets under stress loads. Further, routing is a system level service. So yeah, with gigabit interfaces becoming common, if you are routing at all -- and this include NAT and PPP and PPPOE and other more and more common connection facilities that require routing between a local network and the rest of the Internent -- then you're quite correct that the code belongs in the kernel, if that function is performance sensitve. Just like the HTTP server belongs in the kernel when serving static pages, if that function is performance sensitive, or if it must operate within a browser tiemout independent of system load, as it must do, if that is the system management interface. Guess what? MPD -- the Multilink PPP daemon -- and the PPPOE implementation *ARE* in the kernel. Guess what else? So is the ARP code. > If a user needs a dedicated web server, he should consider > something other than a general-purpose operating system. For example? What are the top two dedicated web servers running on something other than a general-purpose OS which you would suggest using, in this circumstance? > Additionally, needing a dedicated server for anything often > is an indication of skimping on hardware, and on that path > lies danger, no matter what OS is used. The "danger" is, once again, only in your opinion. By that same argument, use of free software as your computing platform is an indication of "skimping on software", if you want to point to skimping as something bad. If you're in for a penny, then you're in for a pound: you can't call "skimping on hardware" bad, unless you tar use of FreeBSD with that same brush. -- Terry To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-questions" in the body of the message