Hi,
I guess I didn't explain the module "thing" properly. I too use
modules, but I eliminate the modules for hardware I don't have in my
system and fully customize the kernel for what I plan on using the
system for as opposed to turning on all standard modules.
Harold
John Summerfield wrote:
Harold Norris wrote:
Hi,
Its very true that you lose out on RedHat's support for a recompiled
kernel, but if you maintain the latest version of the kernel, you should
get the latest fixes, whatever they may be.
You don't automatically get Red Hat's security fixes. Red Hat employs
several kernel folk including Alan Cox.
I would not be surprised if RH has support for new hardware before the
standard kernel. It certainly did back when I built kernels. See my
comments on the latest Fedora 8 kernel further on.
I personally have been using Redhat with my own kernel for about 10
years or so (RedHat 5.2) and have never had a kernel related issue. As
far as performance goes, if you remove all of the unnecessary modules
from the kernel, and build it to work with the hardware you have, it
will run faster because the available kernels are built to run on
generic processors. If you take a i386 kernel and run it on a Pentium
4, you lose out on all optimizations for the faster processor.
I used to build my own kernels sometimes too. I built late 2.3.xx and
2.4.0 kernels for USB support. I have built kernels as far back as
late 2.0 kernels.
there are two relevant gcc switches that affect the instructions chosen.
-march determines the instruction set. Choosing "-march=i586" limits
the compiler to building for Pentium and later processors.
-mtune specifies the target processor. Code is optimised for this
processor
On SL5 you might build a kernel with one of these -march specifications:
_k8, opteron, athlon64, athlon-fx_
AMD K8 core based CPUs with x86-64 instruction set support.
(This supersets MMX, SSE, SSE2, 3dNOW!, enhanced 3dNOW! and
64-bit instruction set extensions.)
and similarly for -mtune.
For Intel processors one may choose:
_nocona_
Improved version of Intel Pentium4 CPU with 64-bit
extensions, MMX, SSE, SSE2 and SSE3 instruction set support.
On Fedora, on 64-bit Intel, the latest Fedora kernel builds with these
-m switches:
-m64
-maccumulate-outgoing-args
-mcmodel=kernel
-mno-3dnow
-mno-mmx
-mno-red-zone
-mno-sse
-mno-sse2
-mtune=generic
It might be that there's a better combination than that (it certainly
looks suboptimal to me), if I build a replacement takes time, mine for
configuring it, and then computer time. Building a smaller kernel
takes more of my time, because I will take longer configuring it.
I am loathe to build a kernel sans modules, because Red Hat's scripts
assume kernels structured they way Red Hat delivers them.
Also, I am sceptical that there's any significant performance benefit
to built-in drivers. They have to be read from disk one way or the
other, once they're modules are loaded they take much the same amount
of RAM as the built-in drivers.
On my desktop, which is running SL5, I find that system (kernel) time
runs to about ten percent of user time, the time spent doing my work.
If I optimised all the kernel time away, I's still only have a system
that's ten percent faster.
I don't think I will get anything like 100% reduction in system time,
and I don't think that, for small numbers of systems. it's worth the
trouble,
If I were building a significant cluster, and I'm sure some here do,
then it may well be useful to build cut-down kernels. I'd also be
looking to see how much code I could build with Intel's C compiler.
The Fedora 8 2.6.23.1 kernel (I'm eyeing the source rpm now, I don't
have one for EL5) contains 138 patches covering things such as
wireless (including the new driver for Atheros), USB, firewire.
selinux, execshield, ata, sound.