[asterisk-dev] Methodologies for validating dialplan

asterisk at phreaknet.org asterisk at phreaknet.org
Wed Jan 5 07:27:45 CST 2022

On 1/5/2022 5:35 AM, Nikša Baldun wrote:
> Again, sorry for veering off topic. I'll just say that I have tried 
> modifiying Asterisk source. Disabling AMI events helps only a little, 
> and disabling Newexten alltogether proved too difficult, at least for 
> someone with limited insight into inner workings of Asterisk.
I'll take a closer look at this at some point. Based on what Josh and 
you have confirmed, it will be more difficult to decouple the Newexten 
event, but just because this is the way it is now doesn't mean it has to 
stay that way. Surely there is a way to turn it off (besides brute force 
commenting code out), even if it requires some mucking around, and doing 
so would have tangible benefits it sounds like.
> If your dialplan is indeed 10k lines long,
I hadn't checked in a while... my dialplan is currently 24,000 lines at 
the moment, though I've been able to shrink great parts of it by writing 
specific custom C modules to replace frequent or inefficient subroutines 
that did rather generic tasks, so it used to be even larger (not mainly 
in terms of total lines registered in the dialplan, but more in terms of 
# of dialplan priorities executed per call - some of these reduced 
hundreds of dialplan executions into a single function call). This has 
also helped greatly with making the dialplan more concise and efficient. 
Using Set(ARRAY) or MSet to do multiple sets at once also helps reduce # 
of executed priorities. I haven't experienced the noticeable delays with 
dialplan that you had mentioned, before or after, but I'm probably not 
doing what you are.

> I am reasonably certain you are getting frequent task processor 
> warnings in Asterisk log.
I don't believe so... I have seen that a few times, but I rarely do.

> On 05. 01. 2022. 00:00, asterisk at phreaknet.org wrote:
>> On 1/4/2022 5:49 PM, Joshua C. Colp wrote:
>>> On Tue, Jan 4, 2022 at 6:22 PM <asterisk at phreaknet.org> wrote:
>>>     That's a really fair point - maybe another potential source of
>>>     improvement?
>>>     I do use AMI for some things, but I have no use for the
>>>     "Newexten" and
>>>     "Varset" AMI events (if I run my "amidump.php" script, I'll see
>>>     hundreds
>>>     of these constantly even for a single call).
>>>     In addition, it makes using core set debug >= 3 a real pain,
>>>     because
>>>     then every complete AMI event is dumped, the result of which is
>>>     that 90%
>>>     of the debug suddenly becomes an AMI dump of new exten and new vars.
>>> Stasis events can be disabled in stasis.conf, I don't know the 
>>> ramifications of disabling new exten but varset is fine. Generating 
>>> the stasis events is what can be expensive.
>> Thanks, I'll play around with disabling both of them and see how much 
>> that helps.
>> I see "ast_channel_varset_type" in stasis.conf - which one would be 
>> the right one for disabling Newexten? I poked around the code a bit 
>> but I'm not following the connection as much.
>>> AMI less so, and AMI itself has functionality for filtering events 
>>> you don't want.
>> That's true (and I do filter) but AMI itself is still processing the 
>> event, so it'll mean a waterfall of AMI dumps with core set debug >= 
>> 3, and perhaps the overhead is still significant for a large dialplan.
>> Disabling these two AMI events in particular, entirely, would be 
>> nice. It seems like disabling the stasis events might take care of that:
>> ; Use of this functionality may break more complex functionality in 
>> Asterisk
>> ; such as CEL, CDR, transfers, etc. and will likely cause related 
>> messages in ARI
>> ; and AMI to go missing.
>> I don't use ARI at all - or CEL - so as long as CDR remains intact, I 
>> could probably shut off a few of these...
>>>     Adding an option to disable generating those events could
>>>     probably help
>>>     with that, and regardless of the performance benefit, would make
>>>     dealing
>>>     with debug and AMI a lot easier. I wonder if disabling snapshots
>>>     would
>>>     also help.
>>> Fair warning - things internally depend on snapshots. Disabling them 
>>> outright will likely break things.
>> Got it, I wasn't as sure about this. I'll probably leave snapshots 
>> alone for now.
>>>     Can you think of other things about dialplan which hurt performance
>>>     would could be similarly addressed?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20220105/7aa0c4e2/attachment-0001.html>

More information about the asterisk-dev mailing list