В настоящее время я читаю книгу «Программирование на 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.
У меня включен Intel i5Windows 7 x64 и, создавая 100 000 000 процессов, я проверил загрузку своего процессора.Оказалось, что только одно ядро работает на полную мощность, другие ничего не делают (поэтому общая загрузка системы составляет 25%).Я думал, что Erlang VM будет балансировать нагрузку на все 4 доступных ядра, но это не так.
Кто-нибудь знает почему?Что-нибудь плохое в конфигурациях моей Erlang VM?