About Jeoss U 8.04 Kernel

Jeoss U 8.04 derives from Ubuntu 8.04 LTS. Ubuntu kernels are patched versions of unmodified mainline Linux kernel sources from kernel.org compiled with Debian build system plus Ubuntu specific configuration files. Every group of configuration files creates a unique combination of build-time defined kernel variables. These variables set kernel parameters as target processor, memory capabilities, I/O scheduler strategies, process preemption, etc. Ultimately every configuration blend defines a kernel "flavor" for the i386 architecture targeting a specific scenarios.

The different flavors are targeted as follows:

If we now compare the kernel configuration files of the different flavors and versions we get an idea of what Ubuntu considers should define a -server kernel.

Processor Bus width

LTS 8.04 has -server kernel flavor for 32bit processors.

# CONFIG_64BIT is not set
CONFIG_X86_32=y
# CONFIG_X86_64 is not set

LTS 10.04 has -server kernel flavor only for 64bit processors.

CONFIG_64BIT=y
# CONFIG_X86_32 is not set
CONFIG_X86_64=y

Processor Instruction Set

The 32Bit LTS 8.04 -server flavor uses the 686 instruction set (Pentium Pro, Pentium II, Pentium III, Athlon, Athlon XP, etc)

# CONFIG_M486 is not set
# CONFIG_M586 is not set
CONFIG_M686=y

The 32Bit LTS 8.04/10.4 -generic flavor uses the 586 instruction set (Pentium, Pentium MMX, K5, K6, K6-II, K6-III)

# CONFIG_M486 is not set
CONFIG_M586=y
# CONFIG_M686 is not set 

Memory

An x86 32Bit processor can naturally address 4GB (2^32) and "artificially" up to 64GB if it has PAE (Physical Address Extension). Even when this processor feature is included since the Intel Pentium Pro/AMD K6-3 there were not many 32Bit motherboards designed for holding more than 4GB.
From Ubuntu's perspective this feature was decisive for the 32Bit -server flavor definition; all of them requiere processors with PAE enabled.

The 32/64Bit LTS 8.04 -server flavor does requiere PAE

# CONFIG_HIGHMEM4G is not set
CONFIG_HIGHMEM64G=y

The 32Bit LTS 8.04 -generic and -virtual kernels do not requiere PAE
The 32Bit LTS 10.04 -generic kernel does not requiere PAE but the -virtual flavor does

CONFIG_HIGHMEM4G=y
# CONFIG_HIGHMEM64G is not set
    

Preemption

The multitasking Linux kernel allows many user and kernel processes to run concurrently in an ordered way. The scheduler is the kernel piece of code that timely assigns the CPU resource among the several processes at the synchronic rhythm given by a periodic timer interrupt.
Since v2.6 Linux added kernel preemption, which means that kernel and user processes can (under certain conditions) be asyncrhonously interrupted by some high priority process.
Preemption and Scheduling are directly related to OS performance and responsiveness. A preemptive kernel asynchronously interrupting kernel code could negatively impact the overall system performance. In the other hand it will improve the sense of system responsiveness.
In normal situations Desktops prioritizing the user experience turn preemption on while Servers prioritizing proces performance turn it off.

The 32/64Bit LTS 8.04 -server kernels are non-preemptive
The 64Bit LTS 10.04 -server kernel is non-preemptive

CONFIG_PREEMPT_NONE=y
    

The 32/64Bit LTS 8.04 -generic kernels are preemptive
The 32/64Bit LTS 10.04 -generic kernels are preemptive

CONFIG_PREEMPT_BKL=y
CONFIG_PREEMPT_VOLUNTARY=y
    

Latency

The system latency is related to the number of times per second the timer interrupt is generated. This periodic interrupt is the heart beat that synchronically triggers the kernel scheduler to handle every process context switch. Higher interrupt frequencies implies more process switch per second, lower latencies, but also less performance as the processes are interrupted a higher number of times per second.

The 32/64Bit LTS 8.04 -server kernels have CONFIG_HZ=100
The 64Bit LTS 10.04 -server kernel has CONFIG_HZ=100

CONFIG_HZ=100
CONFIG_HZ_100=y

The 32/64Bit LTS 8.04 -generic kernels have CONFIG_HZ=250
The 32/64Bit LTS 10.04 -generic kernels have CONFIG_HZ=250

CONFIG_HZ=250
CONFIG_HZ_250=y
    

I/O Scheduler

The I/O Scheduler is the kernel pice of code in charge of optimising disk access considering the different classes of workloads. There are currently four I/O Schedulers strategies available:

The 32/64Bit LTS 8.04 -server kernels have DEADLINE I/O Scheduler
The 64Bit LTS 10.04 -server kernel has DEADLINE I/O Scheduler

CONFIG_DEFAULT_DEADLINE=y
CONFIG_DEFAULT_IOSCHED="deadline"
    

The 32/64Bit LTS 8.04 -generic kernels have DEADLINE I/O Scheduler
The 32/64Bit LTS 10.04 -generic kernels have DEADLINE I/O Scheduler

CONFIG_DEFAULT_CFQ=y
CONFIG_DEFAULT_IOSCHED="cfq"

 

Jeoss U 8.04 Kernel

Jeoss 8.04 kernel is identical to the 32Bit LTS 8.04 -server kernel with three exceptions:

  1. it does not requiere a PAE enabled CPU. This change allows to run CPUs as AMD GEODE LX.
  2. it has i586 instruction set allowing CPUs from Pentium and higher.
  3. it is Preemptive with Low Latency allowing Asterisk PBX to run even on low power CPUs.