Ok... I think the picture is clearer now...
Linux's modern fork() is copy-on-write by default and thus involve much less overhead than other Unix's fork()s. For some of these other *nixes, you can call a different function, vfork() to get copy-on-write processes.
So Linux fork() and other unices' vfork() would probably be similarly scalable.
copy-on-write processes are a big improvement over old-style fork()-ed processes, but still not as efficient as threads. However, they do have the big advantage of freeing you from a whole universe of threading problems.
What the degree of efficiency difference is between cow-procs and threads are, I don't know.
Both the old Linuxthreads and the new NPTL are 1:1 thread models where each userspace thread is mapped onto a kernel thread. However, the new NPTL threads get a massive scalability boost (on benchmarks) because of their use of futexes and the O(1) scheduler (plus some other stuff I don't know about?).
If futexes and the new O(1) scheduler are the two main things that are largely responsible for NPTL's massive scalability improvement, then I'm guessing we should also see a big scalability boost (but not on the scale of NPTL) for Linux 2.6 fork()-ed processes since the O(1) scheduling naturally also deals with process scheduling.
Would be nice to see a comparison of fork() scalability on 2.4 versus 2.6.
-- reply-to: a n d y @ n e o t i t a n s . c o m -- Philippine Linux Users' Group (PLUG) Mailing List [email protected] (#PLUG @ irc.free.net.ph) Official Website: http://plug.linux.org.ph Searchable Archives: http://marc.free.net.ph . To leave, go to http://lists.q-linux.com/mailman/listinfo/plug . Are you a Linux newbie? To join the newbie list, go to http://lists.q-linux.com/mailman/listinfo/ph-linux-newbie
