To clear up vocabulary; Linux handled MP in 1.3; but to call it symmetric is a stretch. It was one processor for the kernel, and severeal in userland. There were also issues with drivers needing to stay on the same cpu. This is where SunOS 4.1 ended, and OpenBSD is today. It is a perfectly reasonable setup for a 2, perhaps 3 CPU system.
Here in alt.folklore.computers, Just a word from the peanut gallery, but that's our working definition of "re-entrant" in the Unisys transaction (TIP-HVTIP) world. A shared copy of either an instruction bank (IBANK...
These issues gradually resolved, and a minimal SMP system was possible by late 1.x. 2.0 and 2.2 didn't affect this much, except for streamlining some critical code. This worked sort of acceptably well up to 3-4 cpus.
In 2.4 the "great spinlock" was loosened, and important sections were made thread-safe, like an 80-20 rule. This made it scale to 10 or more CPUs; and it did 4 CPUs well. This was as far as NT ever made it, or Tops10 for that matter.
In 2.6 the kernel has been completely overhauled for unnecessary locking and reentrancy is introduced almost everywhere. Even the file metadata stuff is well addressed. It feels just as responsive with lots of cpus churning away at high load as it does with you alone on the box.
Ah, I missed that. Multi is definitely not symmetric unless the system can run with any one of the CPUs and all the others dead. IOW, each...
I have heard figures of 64 or 128 cpus mentioned. I don't think the OS is the bottleneck here anymore; the hardware issues are far more limiting. Thousands of cpus have been tested in emulation.