I always "roll my own" and usually the latest of the series that comes with
Slackware. Sometimes there are some speed benefits if you include only drivers
and options necessary for your machine (and use).
Even the "generic" kernel is a pretty big beast with frame-pointers, tracers and
lots of debug stuff. Very useful if something goes bad and you have to find out
what happened.
I don't want that functionality. I usually just do a
make allnoconfig && make menuconfig and fill in the stuff that's necessary.
If I don't need modules I make it monolithic. These days with the nouveau driver
I don't see any real reason not to.
Is there a difference? Well I've done some tests. I found a small benchmarking
program here:
http://www.unix.com/source/bm.zip. If you want to run it, just unpack
an execute ./Run, takes about an hour. Don't even try to compile anything in there.
The code is ancient and gcc barfs immediately. Some of the tests wont complete
correctly, I've included the ones that do.
Tests on 'generic' (with the deadline scheduler):
BYTE UNIX Benchmarks (Version 3.11)
System -- Linux 3.10.17 #1 SMP Wed Oct 23 2013
x86_64 AMD Phenom(tm) 9650 Quad-Core Processor AuthenticAMD
GNU/Linux
Start Benchmark Run: Mon Jan 6 2014.
Dhrystone 2 without register variables 12299645.3 lps (10 secs, 6 samples)
Dhrystone 2 using register variables 12471500.5 lps (10 secs, 6 samples)
C Compiler Test 979.3 lpm (60 secs, 3 samples)
Dc: sqrt(2) to 99 decimal places 119317.6 lpm (60 secs, 6 samples)
Recursion Test--Tower of Hanoi 117369.4 lps (10 secs, 6 samples)
System Call Overhead Test 2569626.8 lps (10 secs, 6 samples)
Pipe Throughput Test 1544249.7 lps (10 secs, 6 samples)
Process Creation Test 9651.5 lps (10 secs, 6 samples)
File Read (10 seconds) 4786429.0 KBps (10 secs, 6 samples)
File Write (10 seconds) 1324905.0 KBps (10 secs, 6 samples)
File Copy (10 seconds) 122986.0 KBps (10 secs, 6 samples)
File Read (30 seconds) 4776556.0 KBps (30 secs, 6 samples)
File Write (30 seconds) 1162625.0 KBps (30 secs, 6 samples)
File Copy (30 seconds) 84572.0 KBps (30 secs, 6 samples)
Tests on a monolithic kernel (deadline scheduler):
BYTE UNIX Benchmarks (Version 3.11)
System -- Linux 3.10.25-mono #1 SMP Mon Jan 6 2014
x86_64 AMD Phenom(tm) 9650 Quad-Core Processor AuthenticAMD
GNU/Linux
Start Benchmark Run: Mon Jan 6 2014.
Dhrystone 2 without register variables 12222226.7 lps (10 secs, 6 samples)
Dhrystone 2 using register variables 12313789.8 lps (10 secs, 6 samples)
C Compiler Test 1004.3 lpm (60 secs, 3 samples)
Dc: sqrt(2) to 99 decimal places 129666.7 lpm (60 secs, 6 samples)
Recursion Test--Tower of Hanoi 129083.8 lps (10 secs, 6 samples)
System Call Overhead Test 2633972.7 lps (10 secs, 6 samples)
Pipe Throughput Test 1574751.0 lps (10 secs, 6 samples)
Process Creation Test 9394.2 lps (10 secs, 6 samples)
File Read (10 seconds) 5439652.0 KBps (10 secs, 6 samples)
File Write (10 seconds) 1368310.0 KBps (10 secs, 6 samples)
File Copy (10 seconds) 125975.0 KBps (10 secs, 6 samples)
File Read (30 seconds) 5509959.0 KBps (30 secs, 6 samples)
File Write (30 seconds) 1202322.0 KBps (30 secs, 6 samples)
File Copy (30 seconds) 84547.0 KBps (30 secs, 6 samples)
The main difference seems to be in the memory subsystem (files get cached
pretty much instantly with 4G ram). Read speeds are significantly higher.
I guess I'll stick with this one.