[erlang-questions] 14 seconds from disaster

Kostis Sagonas <>
Wed Mar 19 08:01:26 CET 2014


On 03/19/2014 05:08 AM, Richard A. O'Keefe wrote:
> I tried this on two machines with different CPUs and operating systems.
>
> 1> [if N rem 10000 == 0 -> io:write(N), io:nl(), A ; true -> A end
> 1> || N <- lists:seq(1,10000000),
> 1>     A <- [list_to_atom(integer_to_list(N))]].
>
> This tries to create 10,000,000 atoms, reporting every 10,000.
>
> After just 14 seconds 'beam.smp' goes to 95% CPU and stays there,
> busy doing oodles of system calls (including pthead_cond_wait)
> and getting nowhere.
>
> *That*  is a negative performance impact.

Your experiment has very little to do with performance. What happens 
after 14 seconds in your machine is that the VM crashes because it 
exceeds the the maximum number of index entries in the atom table (whose 
default value is 1048576). For better or worse, the system then tries to 
write a huge erl_crash.dump file and this naturally takes long.

Of course this is not nice, but has nothing to do with VM performance 
for `normal' program execution; it has to do with what happens when the 
VM crashes.

Kostis



More information about the erlang-questions mailing list