【发布时间】:2011-08-07 11:51:39
【问题描述】:
目前,我正在阅读“Programming Erlang”一书,我决定在创建 N 个进程的基准测试中测试我的系统,代码如下:
-module(my_ring).
-export([start/1, start_proc/2]).
start(Num) ->
start_proc(Num, self()).
start_proc(0, Pid) ->
Pid ! ok;
start_proc(Num, Pid) ->
NPid = spawn(?MODULE, start_proc, [Num - 1, Pid]),
NPid ! ok,
receive
ok ->
ok
end.
我在 Windows 7 x64 上安装了 Intel i5,在创建 100 000 000 个进程时,我检查了 CPU 的负载。事实证明,只有一个核心在满负荷工作,其他核心什么也不做(因此整体系统负载为 25%)。我认为 Erlang VM 会平衡所有 4 个可用内核的负载,但事实并非如此。
有人知道为什么吗?我的 Erlang VM 的配置有什么问题吗?
【问题讨论】:
标签: multithreading concurrency erlang