Re: EVAPI processing delays

Victor Seva via sr-users <[email protected]>
Newsgroups gmane.comp.voip.ser
Message-ID <[email protected]>
Hi Sergio,

On 1/16/26 12:32, Sergio Charrua via sr-users wrote:
> Hello everyone!
> 
> For future reference and to close this subject, I have resolved the 
> issue using the wait_idle and wait_increase parameters. While these are 
> documented, I believe the underlying mechanism could be more clearly 
> explained.

One of the great things about kamailio being an open source project is 
that you can contribute to it improving, in this case, the documentation.

> Issue Summary: During testing at 1 call per minute, we observed random 
> delays of 0.1 to 1.5 seconds between the EVAPI client response and 
> Kamailio relaying the call.
> 
> Findings:
> Debug logs (level 3) showed that the delay occurred between 
> evapi_queue_add(), when the response is received and queued, and 
> evapi_queue_get(), when it is fetched for processing.
> 
> 2026-01-15T10:45:52.640261+01:00 ire-lab-kamailio1 kamailio[1489415]: 
> DEBUG: {1768470259.772039 1489415 1 1 OPTIONS 123} evapi 
> [evapi_dispatch.c:140]: evapi_queue_add(): adding message to queue 
> [RESPONSE:30920:1266302652:{"action"
> 2026-01-15T10:45:53.637553+01:00 ire-lab-kamailio1 kamailio[1489416]: 
> DEBUG: {1768470352.135725 1489416 1 1 OPTIONS 123} evapi 
> [evapi_dispatch.c:187]: evapi_queue_get(): getting message from queue 
> [RESPONSE:30920:1266302652:{"acti
> 2026-01-15T10:45:53.637930+01:00 ire-lab-kamailio1 kamailio[1489416]: 
> DEBUG: {1768470352.135725 1489416 1 1 OPTIONS 123} evapi 
> [evapi_dispatch.c:880]: evapi_run_worker(): processing task: 
> 0x7fa97d286b00 [RESPONSE:30920:1266302652
> 
> - Despite not developing C/C++ for about 30 years, reviewing the code 
> (at https://github.com/kamailio/kamailio/blob/5.8.4/src/modules/evapi/ 
> evapi_dispatch.c <https://github.com/kamailio/kamailio/blob/5.8.4/src/ 
> modules/evapi/evapi_dispatch.c>), lines between 877 and 890 where a 
> While loop would actively check for queued messages (at least, that is 
> my understanding)
> - the loop makes use of the _evapi_wait_increase and _evapi_wait_idle 
> variables, that match Evapi's module parameters waint_increase and 
> wait_idle.
> - the line 890 is where the delay is generated:
> 
>     sleep_us(_evapi_wait_idle_step * _evapi_wait_idle); 
> 
> 
> While this delay likely disappears under high load (our target is 1500+ 
> CAPS), it caused our QA tests to fail at low volumes. By setting 
> wait_idle to 50ms and wait_increase to 1, the delay was reduced to a 
> range of 20ms to 70ms.
> 
> Thanks god Kamailio is open-source! ;)
> 
> Hoping that Kamailio Dev / Docs teams won't mind, I would suggest to 
> detail more the Evapi Module.
> Documentation doesn't say anything about a queue managing the responses 
> from EVAPI Client. In fact, the word "queue" is only mentioned once in 
> the wait_idle description, but it really is not clear, technically, why 
> the queue exists or how it is handled and how to manage it.
> The Evapi Module is a fantastic tool once you understand it, as with any 
> other tool (software or hardware), but it is unclear how it works behind 
> the scenes.
> More low-level details about the internal processing logic would be very 
> helpful for users to optimize their configuration.
> 

We don't mind quite the opposite. Please create a pull request with your 
desired changes.

> Hope this helps.

Looking forward to see that improvement as a pull request.

-- 
-----------------------------------------------------------------
| ⢀⣴⠾⠻⢶⣦⠀                                            Victor Seva |
| ⣾⠁⢠⠒⠀⣿⡁                     [email protected] |
| ⢿⡄⠘⠷⠚⠋⠀PGP: 8F19 CADC D42A 42D4 5563  730C 51A0 9B18 CF5A 5068 |
| ⠈⠳⣄⠀⠀⠀                                        Debian Developer |
   -----------------------------------------------------------------

__________________________________________________________
Kamailio - Users Mailing List - Non Commercial Discussions -- [email protected]
To unsubscribe send an email to [email protected]
Important: keep the mailing list in the recipients, do not reply only to the sender!
OpenPGP_0x51A09B18CF5A5068.asc (application/pgp-keys, 18.3 KB)
-----BEGIN PGP PUBLIC KEY BLOCK-----

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
2Q7b
=yxa8
-----END PGP PUBLIC KEY BLOCK-----
OpenPGP_signature.asc (application/pgp-signature, 235 B)
-----BEGIN PGP SIGNATURE-----

iHUEARYKAB0WIQQq6AO8RS0zF4SC1vh9e2XEKg7IsgUCaXD2LwAKCRB9e2XEKg7I
srzSAQDuAmSLOBDBE04yM3ynvV0zFIudA/WFmB9yo6AR+ELCgQEA2+Q8PyW5/8QW
St87qsn4B3Hjb2ZrZKEbhLFg03fKigs=
=kVaK
-----END PGP SIGNATURE-----
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.