The Linux kernel uses a hook-type memory management for modules.  The only
overhead for a modular kernel is this "hook" which is very small (a few
bytes or a few Kbytes, I'm really not sure).  This is added when you say you
want a modular kernel in the config file.  This is the overhead that you are
concerned about.

A modular kernel with modules X, Y, and Z will be ever so slightly bigger
than a monolithic kernel with X, Y, and Z.

By having a modular kernel you are not increasing your kernel's necessary
RAM or changing the optimization but you are giving yourself the opportunity
to modify your kernel on the fly.  This is one of the best feature of the
Linux kernel.  I would be very careful when not using it.

Jeff Rasmussen

-----Original Message-----
From: Shawn [mailto:sfertch at real-time.com]
Sent: Friday, February 20, 2004 5:58 AM
To: TCLUG Mailing List
Subject: Re: [TCLUG] Kernel question


On Thu, 19 Feb 2004 23:17:05 -0600 (CST)
Munir Nassar <nassarmu at redconcepts.net> wrote:

> yes a monolithic kernel is smaller, but who cares?
> at most its maybe 50 megs, thats $.5 in todays harddrive prices.
> 
> the advantage of modularized kernels far outweighs the size or the
> kernel.
> 
> also another advantage of modularized kernels is that you can unload
> and reload the module to add support for hotadded items, such as
> scsi devices. of course this does not work if you want to reload
> oyur adaptec drivers while the bootdevice is on said adaptor.
> 

I wasn't specifically talking about size of the kernel, but that is an
important bit as well.  I was thinking more along the lines of memory
utilization by the kernel.  If the kernel requires too much memory to
run, you degrade the overall performance of the system.

On a system where I'd be using hot-swap devices, or a "test box" so to
speak, I'd load things as a module.  But I was thinking that a
monolithic kernel that was built for that specific machine that won't
be using hot plug/swap devices shouldn't need them loaded.  Why waste
resources to load or run a module or part of the kernel when it's
never going to be used?  Regardless of the amount of memory or CPU
available to the system.  If you're trying to optimize a system, you
want to have everything set correctly.

>From what I've seen on my different systems, with different
processors/memory/HW configs, there's almost always a default of i686
even on the Athlon processors, as well as modules loaded I'm never
going to use.  I'd rather have the kernel tuned for the correct
processor, and eliminate part of the kernel that I'm never going to
use.  Sure, it won't hurt anything to run the default kernel, I've
been doing it for quite a few years.  Just now do I have the itch to
want to optimize the kernel.

Of course, that leads to many different kernels as someone  (Karl?)
mentioned.  But, to me right now that isn't an issue.  Besides, I
administer close to 40 HP-UX and Tru64 boxes at work that are for the
most part running custom built kernels per the use and load of each
particular box.


-- 
Shawn

 "Courage is resistance to fear, mastery of fear -- not absence of
fear."
	-Mark Twain

  Ne Obliviscaris --  "Forget Not"

_______________________________________________
TCLUG Mailing List - Minneapolis/St. Paul, Minnesota
http://www.mn-linux.org tclug-list at mn-linux.org
https://mailman.real-time.com/mailman/listinfo/tclug-list

_______________________________________________
TCLUG Mailing List - Minneapolis/St. Paul, Minnesota
http://www.mn-linux.org tclug-list at mn-linux.org
https://mailman.real-time.com/mailman/listinfo/tclug-list