Megaco Avalanche! (was: ets:update_counter/3 taking a looooong time!)
Micael Karlberg
micael.karlberg@REDACTED
Tue May 6 14:09:34 CEST 2003
Hi Peter,
Another suggestion came up. Try eprof and compare the
result to fprof (in case fprof has a bug).
/BMK
Peter-Henry Mander writes:
> Hi Micael,
>
> Thanks for the three suggestions. Since I managed to hack the problem
> into submission and obtain a sufficiently fast result, I'm probably not
> going to be able to try them until after more urgent hacking is
> finished. But when I do I'll try to isolate and diagnose what was going on.
>
> A curious symptom was that the two nodes either end of the megaco
> signalling link where running idle, as if they where waiting for each
> other. Could it be that they were franticly garbage collecting or
> something? The CPU usage was practically zero.
>
> Q1: no, I haven't changed any default values. I noticed the
> reset_trans_id_counter function but ignored it because it was never
> being called.
>
> Q2: The results were the same whether "hot" or "cold." I assume you are
> hinting at the garbage collector kicking in?
>
> S2: I have a different test that "churns" the calls very quickly,
> setting them up and tearing them down without holding them and without
> any pause between. This one sustains almost 400 calls setup and teardown
> every second, so it is clear to me that ets:update_counter/3 *must* be
> capable of at least this rate. When I attempted this new test where
> calls were setup without tearing them down I was expecting at least
> 400/second if not more. So I am very puzzled as to why I have to
> introduce "breathing time" when before it wasn't necessary. The only
> difference is that memory is being rapidly consumed by the call
> processes to store the call contexts.
>
> If I manage to reproduce the symptoms with a subset of the code, would
> you be interested in reading it? I must warn you that it is *very*
> "experimental!" i.e. hacked code.
>
> Pete.
>
> Micael Karlberg wrote:
>
> Hi Peter,
>
> I have been trying to reproduce your problem without success.
> I have some questions and suggestions.
>
> q1: Have you changed the max counter value (max_trans_id)?
> A small value would lead to reset_trans_id_counter more
> often (I admit that from the fprof output that does not
> seem to be the case).
>
> q2: The fprof results included here, where they produced
> after the system beeing "warmed up"?
>
> s1: When fprof'ing, use fprof:apply(Func, Args, OptionList)
> and include the megaco system processes megaco_config
> and megaco_monitor ({procs, [self(),megaco_config,megaco_monitor]}).
>
> s2: In order to get more reliable results, run more then one
> set of call-setup: N*(add, modify & subtract).
>
> s3: Try setting prio of the megaco_config process to high.
>
> /BMK
>
>
--
Micael Karlberg Ericsson AB, Älvsjö Sweden
Tel: +46 8 727 5668 EAB/UHK/KD - OTP Product Development
ECN: 851 5668 Mail: micael.karlberg@REDACTED
Fax: +46 8 727 5775
More information about the erlang-questions
mailing list