On 10 May 2019, at 11:10, Bogdan-Andrei Iancu wrote:

> Hi Dan,
> 
> Thanks for the contributions, I will review 
> https://github.com/OpenSIPS/opensips/commit/04175e5728b3ab2586502627f54aaab2db440999
> 
> And the docs you are looking for is 
> https://www.opensips.org/Documentation/Script-CoreParameters-3-0, right ?

My question was about where are the sources for the docs, as in I tried to add 
the note about the precedence of the options, but I could not find the docs in 
the git repository to modify them. I only see the modules documentation in the 
git source.

> 
> The "inconsistency" you mentioned has deeper roots and comes from how UDP and 
> TCP are actually implemented in OpenSIPS (like for UDP each interface has its 
> own set of processes, while for TCP there is only one shared pool of procs). 
> The auto-scaling simply followed that.
> 
> Best regards,
> 
> Bogdan-Andrei Iancu
> 
> OpenSIPS Founder and Developer
>  https://www.opensips-solutions.com
> OpenSIPS Summit 2019
>  https://www.opensips.org/events/Summit-2019Amsterdam/
> 
> On 04/30/2019 01:00 PM, Dan Pascu wrote:
>> On 26 Apr 2019, at 12:00, Bogdan-Andrei Iancu wrote:
>> 
>>> Well, at the time I developed the feature, that was the feeling in do it - 
>>> probably the idea of the difference between UDP and TCP is too deep in my 
>>> brain.
>>> 
>>> On the other hand, it make sense what you also say. If you open a bug 
>>> report for this, we might be able to pack it as fix for 3.0.
>> I pushed a small fix that allows one to specify an auto scaling profile with 
>> udp_workers. Someone more knowledgeable with the code should double check 
>> it, just in case I missed something.
>> 
>> It works by defining a global udp scaling profile and uses that if the 
>> listener interface didn't define any (i.e. it acts as a fallback:
>> 
>> if listener_scaling_defined:
>>   use_listener_scaler
>> elif global_scaling_defined:
>>   use_global_scaler
>> else:
>>   use_none
>> 
>> This means that if both listen and udp_workers define a scaling profile, the 
>> one defined in listen will take precedence.
>> 
>> Someone should update the documentation with this detail (btw, where is the 
>> documentation for the global script parameters? I checked the source tree 
>> and could not find it)
>> 
>> As a note, there is some inconsistency in the behavior compared to tcp. With 
>> tcp, since it can only define the scaling profile with tcp_workers, that 
>> profile is global and is applied to all listening interfaces. So if one has 
>> multiple listeners for tcp, all will share the same single pool of workers. 
>> With udp though, because it checks it per listener and it falls back to the 
>> global one if undefined, there will be a worker pool per listener interface, 
>> even if the listener doesn't define it's own scaling profile. So because of 
>> the implementation details, udp will have as many worker pools as udp 
>> listening interfaces are defined.
>> 
>> In an ideal scenario, the scaling defined globally with udp_workers and 
>> tcp_workers should only create one worker pool shared by all interfaces that 
>> don't define their own, and only interfaces that explicitly define a scaling 
>> profile should have their own separate worker pool. However the changes 
>> required to do this are not trivial and seem to require a major refactoring 
>> of the code so I left them out for now. Maybe in a future update someone 
>> more knowledgeable could reorganize the code to achieve this and also allow 
>> defining a scaling profile with tcp listeners.
>> 
>>> On 04/25/2019 08:31 PM, Dan Pascu wrote:
>>>> On 25 Apr 2019, at 19:32, Bogdan-Andrei Iancu wrote:
>>>> 
>>>>> Dan,
>>>>> 
>>>>> It seems to be a documentation error. The udp_workers param do not 
>>>>> support the "use_auto_scaling" option, as for UDP you can define the 
>>>>> profile per listener. I will fix the doc.
>>>> It would make sense to be able to specify them in a similar manner. Either 
>>>> through xxx_worker or listen or both.
>>>> I'd like to keep my configuration organized. Right now I can only specify 
>>>> it through tcp_workers for tcp and listen for udp. Why is there this 
>>>> limitation that udp_workers doesn't accept the syntax and listen only 
>>>> accepts it for udp?
>>>> 
>> --
>> Dan
>> 
>> 
>> 
>> 
> 


--
Dan





_______________________________________________
Devel mailing list
[email protected]
http://lists.opensips.org/cgi-bin/mailman/listinfo/devel

Reply via email to