» Use the Cores, erl #
In spite of the fact that my last Apple workstation failed rather ingloriously after only a couple of years of use, I went ahead and replaced it with another Apple workstation, an eight-core Mac Pro.
As an experiment, I decided to run the same Erlang benchmark (big.erl)
that I ran on the quad-core machine, this time with Erlang R12B. The
previous
results showed that four schedulers was optimal on the four-core
machine. Here are the results of the same test battery on the
eight-core machine:

Two things are odd about this chart:
- The running times appear to be about equal to the running times for the benchmark on the quad-core machine. The raw clock speeds aren't that different per core (2.5GHz G5 versus 2.8GHz Xeon), so maybe it's not unreasonable for that to be a draw.
- Four schedulers appears to be the optimum (from the set {1,2,4,8,16,32}), where eight would have been the expected value.
It turns out that the optimality of four schedulers in this case doesn't disprove the hypothesis that the optimum number of schedulers equals the number of cores, since the benchmark only appears to be utilizing three of the eight cores:

The question is why the Erlang VM isn't using the available CPU
resources. (Two separate VMs running big.erl get
utilization up to 85%.) The answer may be buried somewhere inside
operating system limits (see, e.g., sysctl(3)
and sysctl(8);
maybe kern.clockrate?), but it might also be something
more interesting. Meanwhile, I'll try to come up with a similar toy
benchmark for Haskell to see if it achieves better utilization of the
CPUs.
