为什么erlang smp不能使用足够的cpu内核?

时间:2013-09-23 08:51:08

标签: erlang

我启动了一个erlang smp应用程序,就像这样:

Erlang R15B01(erts-5.9.1)[source] [64-bit] [smp:12:12] [async-threads:0] [hipe] [kernel-poll:true]

然后我用这段代码来测试smp函数:

Fun = fun() ->
    L = lists:seq(0, 1000000),
    F = fun(_I, Acc) ->
        I = util:rand(0,1000000),
        case lists:member(I, Acc) of 
             true -> L1 = lists:delete(I, Acc), 
                     L1 ++ [I];
             _ -> Acc ++ [I]
        end
    end,
    lists:foldr(F, L, L)
end.

P = spawn(Fun).

P1 = spawn(Fun).

P2 = spawn(Fun).
在早期,它运行完美,它使用大约300%的CPU,平均负载大约为3。

但几天之后,再次运行此代码,它只使用大约100%的cpu,并且不能使用其他内核。

是erlang smp的错误吗?或者只是linux限制?

谢谢

0 个答案:

没有答案