Linux Cpu Scalability

How well does Linux scale upto multi-CPU boxes? How well does Linux scale down to embedded devices?


I was under the impression that linux had trouble scaling well beyond 2 CPUs. I got this impression from reading kernel mailing list archives. My understanding is that 2.4 brings linux up to being fully optimized on 4 CPUs, and 2.6 will bring a much larger jump in scalability to something like 16 or 32 CPUs. Of course, scalability depends on the task. For some tasks, 2.0 ran just great on a 4 CPU system. But I would imagine that those tasks that ran well on 2.0 aren't the ones being run on a S/390. Or course, who knows what IBM did to linux. I don't think that their patches have been integrated back into the main kernel tree yet.


Scaling of Linux SMP depends indeed on the task. Tasks that are userspace-bound have scaled well since 2.0. The problem in 2.0 was that SMP safety in the kernel was accomplished by using one big kernel lock. This situation, however, has steadily improved. According to the SMP HOWTO:

What is the status of converting the kernel toward finer grained locking and multithreading?

Linux kernel version 2.2 has signal handling, interrupts and some I/O stuff fine grain locked. The rest is gradually migrating. All the scheduling is SMP safe.

Kernel version 2.3 (next 2.4) has really fine grained locking. In the 2.3 kernels the usage of the big kernel lock has basically disappeared, all major Linux kernel subsystems are fully threaded: networking, VFS, VM, IO, block/page caches, scheduling, interrupts, signals, etc. (Ingo Molnar)


BTW, SGI has linux running on a 32 CPU system, with 24 SCSI controls, 4 gigs of ram, and 10 harddrives. I forget how many NICs. The purpose of this is to work on getting linux to scale better since they want to use linux when they switch to Itanium CPUs.


scaling up

I suspect that most CPU clusters -- using far more than 4 CPUs -- are Beowulf clusters running Linux. However, the 3rd largest supercomputer in the world (as of 2003) uses Max OS X running on 1100 Apple Xserve G5 cluster nodes.


scaling down

I've been told that "(Linux currently scales from a minimal size of around 500 kilobytes of kernel and 1.5MB of RAM, all before taking into consideration application and service requirements.)"

RedHat (if I understand correctly) recommends that smaller systems use "eCos [EcOs], the embedded Configurable operating system, ... [for] devices with memory footprints in the 10's to 100's of kilobytes, or with real-time requirements."


CategoryUnix CategoryLinux


EditText of this page (last edited July 9, 2007) or FindPage with title or text search