Arnaud Delobelle, 10.02.2012 16:43:
On 10 February 2012 14:52, Massimo Di Pierro wrote:
Forking is a solution only for simple toy cases and in trivially parallel cases. People use processes to parallelize web serves and task queues where the tasks do not need to talk to each other (except with the parent/master process). If you have 100 cores even with a small 50MB program, in order to parallelize it you go from 50MB to 5GB. Memory and memory access become a major bottle neck.
I don't know much about forking, but I'm pretty sure that forking a process doesn't mean you double the amount of physical memory used. With copy-on-write, a lot of physical memory can be shared.
That applies to systems that support both fork and copy-on-write. Not all systems are that lucky, although many major Unices have caught up in recent years. The Cygwin implementation of fork() is especially involved for example, simple because Windows lacks this idiom completely (well, in it's normal non-POSIX identity, that is, where basically all Windows programs run). http://seit.unsw.adfa.edu.au/staff/sites/hrp/webDesignHelp/cygwin-ug-net-noc... Stefan