Why I'm %*)(! tired of memory fragmentation
Novell's new Open Enterprise Server
has caused waves in the marketplace since it includes a choice of kernels to run Netware services from. Specifically, the traditional Netware kernel (arguably called Netware 7), and a Linux kernel (a.k.a. SuSE Enterprise Server 9 or 10). Novell has made a big deal about not being able to tell from a user perspective the difference between the two kernels. From the admin point of view with regards to web-tools, its quite clear. But from the end-user, the same. This is a big deal.
This gives Mega Corps a Linux kernel that has the history of support Novell has. Novell has been providing support to their OSes for coming on twenty years now, and a lot of Fortune BigNumber companies have support contracts with Novell already. The argument here has been covered on Slashdot a number of times, so I won't get into it.
So why am I, arguably a Netware bigot, looking forward to the choice? Because I very, very tired of memory allocator issues. Right there in the readme for the OES Beta is a little bit of text that sums it up completely:
The Linux kernel provides more robust memory management and TCP/IP services.
Netware has had TCP/IP available for its kernel since the NW3.11 days (1991 for those that keep track). Here we are, fourteen years later and Netware is still suffering stupid problems with regards to TCP/IP services. WinSock2 services are mostly OK. Routing is also mostly OK. I'd be happy with "OK" and not just "mostly OK".
The Memory Allocator issues really came to the fore when Netware 6.5 released. A pair of technologies ganged up on the staid Netware kernel to thump it into faultiness. Novell's eDirectory 8.7.3 included a much changed caching mechanism that greatly increased both how much data is stashed into memory, and changed how often it gets swapped around from disk. NSS 3.whatever that came with NW6.5 also included greatly changed disk-caching mechanisms for file serving, which also made disk-caching much more aggressive than it once was. All of this creates increased memory load/unload calls, and runs smack into Netware's intrinsic lack of ability to handle misbehaving applications.
Unless otherwise defined, all Netware programs run in Kernel space. Due to the ability of end-users to run stuff on the machine, OSes like Linux and Windows have had to create segregation between user-space and kernel-space. Netware 5.1 introduced the ability to run things in protected memory (i.e. not in Kernel space) but the number of programs that were able to run like that was very limited. Again, for comparison Windows NT introduced to the Windows world the idea of each program running in its own protected memory space. Two revs of Netware later, and the number of applications that can run protected is better; arguably the most recognizable is Apache2.
Within each memory space you can run into the specter of memory fragmentation. This is the same thing as disk fragmentation, only applied to memory. And if a program can't malloc() a chunk of free (contiguous) memory of the size it needs, it returns an error condition. I may still have 251 megs of free memory, but it doesn't help me if that memory is segregated into thousands of 2k words. Therefore, because Netware doesn't force separation of process environments, bad programming can cause system-wide stability issues.
This is why I'm looking forward to a Linux kernel option. I'm not looking forward to playing with version 1.5 of certain services, but the idea is very attractive. First and foremost, Apache runs a lot quicker on Linux than it does on Netware, due to the vastly superior POSIX emulation and years of platform-specific development. Novell is providing both NSS-on-linux (a new filesystem for linux for those of you who don't know what NSS is), as well as NCP-served-by-linux (different than the ncpfs modules that allow the mounting of NCP volumes), which will provide the 'native' fileserver for Linux. Whether or not this fileserver will be better or worse with regards to disk-caching performance I couldn't say. But process separation should provide a better firewall between runaway processes and system kabooms.
One of the extra-spiffy things with OES is that the clustering system that comes with it allows both Netware and Linux kernels in the same cluster. That's really spiffy. That way I can have Linux serving my web stuff (NetStorage, web-pages-from-user-dir, iprint) and Netware serving files. Yay!