[erlang-questions] Load testing in parallel

Ahmed Ali <>
Mon Aug 13 08:40:59 CEST 2007


Hi all,

I've been trying to load test a function in my code. The way I'm doing it is
to generate lists of the data I want to process, start a process for each
list and calculate runtime for each process. The function that I implemented
will call a  WebService operation in a different host for each data.

I have the code below for this test. what I do is basically run
load_test(10, 1000) to generate 10 lists, each with 1000 data in it.

The problem is that WebService call is done successfully but I don't get any
output for the statistics. When I run the code sequentially (i.e. instead of
spawn the call to run_process, I call run_process directly) I get the output
with no issues. Is there something that I missed in the code below? I
appreciate your help.

Best regards,

Ahmed Al-Issaei

run_process(Num, Fun, List, _Pid) ->
    statistics(wall_clock),
    io:format("load testing process~n"),
    lists:map(Fun, List),
    {_, Time2} = statistics(wall_clock),
    U2 = Time2 / 1000,
    io:format("Num (~s) done: total time = ~p~n",[Num, U2]).

start(_N, _Op, [], _Pid) ->
    true;
start(Num, Op, Final, Pid) ->
    [Head | Rest] = Final,
    spawn(?MODULE, run_process,  [Num, Op, Head, Pid]),
    start(Num-1, Op, Rest, Pid).

load_test(Threads, Size) ->
    List = generate_lists(Threads, Size, []),
    Op = fun(X) -> call_ws_create(X) end,
    start(Threads, Op, List, self()).
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20070813/868ef231/attachment.html>


More information about the erlang-questions mailing list