John Pappas j at jvpappas.net
Fri Jul 31 14:52:01 CDT 2009

On Fri, Jul 31, 2009 at 10:56, Enrique Sanchez Vela
<esanchezvela at yahoo.com>wrote:

> is there a fundamental difference between the two?

Yes.  One is compiled to run on 1 processor only, so the scheduling,
interrupt handling is tuned to not worry about simultaneous requests (since
a uni-processor system at the lowest level cannot do more than 1 thing at a
time) so semaphores, spin locks, and atomic transactions are very easy when
non-smp.  When a system CAN execute more than one thing at a time and
different CPUs (cores, or "Logical Compute units presented by
hyper-threading, or both in the case of i7) can execute simultaneously, the
code that handles the parallelization must be compiled into the -smp.  So in
the case of:

      Running an -smp kernel on a uni-processor machine, you have unneeded
code compiled in, thus the kernel has stuff that will never be needed, and
could lead to unnecessary overhead due to the controls in place to handle
parallel ops of SMP.  No harm, but not ideal.

      Running a non-smp kernel on an SMP machine, on the other hand, is a
much different concern, as fundamentally the system will not use the other
compute units (cores or hyperthreads) since it cannot mitigate the
parallelism nor guarantee atomicity of transactions/computations.

Most distros do not pack "Vanilla" Kernels, so the 2.6.16 usually correlates
to the "Vanilla" version and the followon (60.-0.39.3-smp) is the distro
specific version.  How the distro handles the compilation option/versions is
unique to distro.  In order to keep some relative sanity, the distros will
append the major concept to that specific compilation (smp, default, bigsmp,
pae, and the like) to ease the choice of kernels.  You will need to research
your distro to determine their "defaults" or changes to the vanilla kernel,
as it is distro-specific.

Usually SMP machines have large memory requirements (>4GB) as well, so the
"bigsmp" is now usually redundant/not used, and is just -smp.  In the case
of OpenSUSE, -default is now "-smp + -pae" since multi-core and/or
hyperthreaded CPUs (smp) are prevalent, as is memory >4GB (pae), and the PAE
code does not have negative impact or tradeoffs like the SMP code does.


More information about the SATLUG mailing list