[erlang-questions] what does suspend do ?

Philip Clarke <>
Sun Feb 2 22:38:47 CET 2014


Hi,

I have been doing some profiling using fprof on my system.
Using fprof I see that ets:select is calling suspend.

I suspect that I have found a bottleneck where I have an ets table with
write_concurrency defined and there are lots of processes doing reads
thousands of times per second.  But my question is more general to
profiling.

What exactly does suspend do ?  I suspect it may be an indication that my
process has run out of reductions and is preempted by the scheduler ?
Could anyone confirm please ?

Just in case it is useful, here is the relevant part of my fprof analysis
file.

{[{{mymodule,get_values,1},           6, 2992.735,   31.313}],
 { {ets,select,2},                                6, 2992.735,   31.313},
  %
 [{suspend,                                      92, 1707.908,    0.000},
  {{lists,sum,1},                                 6, 1251.655,    0.709},
  {garbage_collect,                               7,    1.859,    1.859}]}.

{[{{ets,select,2},                                6, 1251.655,    0.709}],
 { {lists,sum,1},                                 6, 1251.655,    0.709},
  %
 [{{lists,sum,2},                                 6, 1250.946,    0.047}]}.

{[{{lists,sum,1},                                 6, 1250.946,    0.047},
  {{lists,sum,2},                              20647,    0.000, 1241.206}],
 { {lists,sum,2},                              20653, 1250.946, 1241.253},
    %
 [{suspend,                                      10,    9.693,    0.000},
  {{lists,sum,2},                              20647,    0.000, 1241.206}]}.

Thanks
Philip
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20140202/f1bf204a/attachment.html>


More information about the erlang-questions mailing list