In the Linux world, SMP really does mean symmetric
multi-processing. Currently, there's a lock around
the whole kernel so that only one CPU can be in
kernel mode at once, but all the CPUs can run in
kernel mode at different times.
As you add more CPU's to an SMP system, the amount of extra performance you get out of each additional CPU decreases, until at some point it actually decreases performance to add another CPU. Most systems simply don't support enough CPUs to get a negative marginal performance gain, so that usually isn't an issue. Also, because Linux uses a single lock, the current kernels degrade more quickly as you add more CPUs than a multiple-lock system would for I/O-bound tasks. CPU-bound tasks, on the other hand, work very well with a single lock around the kernel. |