[sr-dev] git:master:e688d656: modules/cdp: new mod param: workerq_length_threshold_percentage
Ovidiu Sas
osas at voipembedded.com
Mon Jan 12 19:52:02 CET 2015
Sorry, somehow I missed your previous post, but yeah, you got the idea :)
-ovidiu
On Mon, Jan 12, 2015 at 1:49 PM, Richard Good <richard.good at smilecoms.com>
wrote:
> Hi
>
> Figured out this means creating a route in the config file that is
> triggered when this happens. Good idea, I'll work on putting this in.
>
> Regards
> Richard.
>
>
>
> On 12 January 2015 at 18:11, Richard Good <richard.good at smilecoms.com>
> wrote:
>
>> Hi
>>
>> Sounds like a good idea.
>>
>> Please can you elaborate more on what you mean by a script callback via
>> dedicated route - or point me towards somewhere in kamailio where this is
>> already used so I can re-use it.
>>
>> Regards
>>
>>
>> *Richard Good*
>> *Senior Manager: Applications & Services* *Smile Communications Pty
>> (Ltd)* *Mobile:* +27 (0) 72 389 8365 * Skype:* richard.a.good
>> richard.good at smilecoms.com <name.surname at smilecoms.com>
>> www.smilecoms.com
>>
>>
>>
>>
>> On 12 January 2015 at 16:00, Ovidiu Sas <osas at voipembedded.com> wrote:
>>
>>> In addition to the warning, it would be nice to run a script callback
>>> via a dedicated route, to let the admin take some decisions in real time.
>>>
>>> Regards,
>>> Ovidiu Sas
>>> On Jan 12, 2015 8:16 AM, "Richard Good" <richard.good at smilecoms.com>
>>> wrote:
>>>
>>>> Module: kamailio
>>>> Branch: master
>>>> Commit: e688d656427dd00d48f1e309c5d8ef991e432b67
>>>> URL:
>>>> https://github.com/kamailio/kamailio/commit/e688d656427dd00d48f1e309c5d8ef991e432b67
>>>>
>>>> Author: Richard Good <richard.good at smilecoms.com>
>>>> Committer: Richard Good <richard.good at smilecoms.com>
>>>> Date: 2015-01-12T15:08:08+02:00
>>>>
>>>> modules/cdp: new mod param: workerq_length_threshold_percentage
>>>>
>>>> This is the threshold of the length of the worker queue as a percentage
>>>> of
>>>> the maximum queue size - when exceeded a warning is written to the log
>>>> file. Nice to check if worker queue is growing.
>>>>
>>>> ---
>>>>
>>>> Modified: modules/cdp/doc/cdp_admin.xml
>>>> Modified: modules/cdp/mod.c
>>>> Modified: modules/cdp/worker.c
>>>>
>>>> ---
>>>>
>>>> Diff:
>>>> https://github.com/kamailio/kamailio/commit/e688d656427dd00d48f1e309c5d8ef991e432b67.diff
>>>> Patch:
>>>> https://github.com/kamailio/kamailio/commit/e688d656427dd00d48f1e309c5d8ef991e432b67.patch
>>>>
>>>> ---
>>>>
>>>> diff --git a/modules/cdp/doc/cdp_admin.xml
>>>> b/modules/cdp/doc/cdp_admin.xml
>>>> index cdf65d2..234e270 100644
>>>> --- a/modules/cdp/doc/cdp_admin.xml
>>>> +++ b/modules/cdp/doc/cdp_admin.xml
>>>> @@ -126,6 +126,24 @@ modparam("cdp", "latency_threshold", 1000)
>>>> </programlisting>
>>>> </example>
>>>> </section>
>>>> + <section>
>>>> + <title>workerq_length_threshold_percentage (int)</title>
>>>> +
>>>> + <para>The threshold of the length of the worker queue as a
>>>> percentage of
>>>> + the maximum queue size - when exceeded a warning is written
>>>> to the log
>>>> + file. 0 means disabled</para>
>>>> +
>>>> + <para><emphasis> Default value is <quote>0</quote>.
>>>> </emphasis></para>
>>>> +
>>>> + <example>
>>>> + <title>Set
>>>> <varname>workerq_length_threshold_percentage</varname> parameter</title>
>>>> +
>>>> + <programlisting format="linespecific">...
>>>> +modparam("cdp", "workerq_length_threshold_percentage", 25)
>>>> +...
>>>> + </programlisting>
>>>> + </example>
>>>> + </section>
>>>> </section>
>>>>
>>>> <section>
>>>> diff --git a/modules/cdp/mod.c b/modules/cdp/mod.c
>>>> index 6857d82..90900d3 100644
>>>> --- a/modules/cdp/mod.c
>>>> +++ b/modules/cdp/mod.c
>>>> @@ -62,6 +62,7 @@ char* config_file="DiameterPeer.xml"; /**<
>>>> default DiameterPeer configuration f
>>>> unsigned int latency_threshold = 500; /**< default
>>>> threshold for Diameter calls (ms) */
>>>> unsigned int *latency_threshold_p = &latency_threshold;
>>>> unsigned int workerq_latency_threshold = 100; /**< default threshold
>>>> for putting a task into worker queue (ms) */
>>>> +unsigned int workerq_length_threshold_percentage = 0; /**< default
>>>> threshold for worker queue length, percentage of max queue length - by
>>>> default disabled */
>>>>
>>>> extern dp_config *config; /**<
>>>> DiameterPeer configuration structure */
>>>>
>>>> @@ -165,6 +166,7 @@ static param_export_t cdp_params[] = {
>>>> { "config_file", PARAM_STRING,
>>>> &config_file}, /**< configuration filename */
>>>> { "latency_threshold", PARAM_INT,
>>>> &latency_threshold}, /**<threshold above which we will log*/
>>>> { "workerq_latency_threshold", PARAM_INT,
>>>> &workerq_latency_threshold},/**<time threshold putting job into queue*/
>>>> + { "workerq_length_threshold_percentage", PARAM_INT,
>>>> &workerq_length_threshold_percentage},/**<queue length threshold -
>>>> percentage of max queue length*/
>>>> { 0, 0, 0 }
>>>> };
>>>>
>>>> @@ -215,7 +217,7 @@ static int cdp_init( void )
>>>> LM_ERR("failed to register stat\n");
>>>> return -1;
>>>> }
>>>> -
>>>> +
>>>> if (register_module_stats( exports.name, mod_stats)!=0 ) {
>>>> LM_ERR("failed to register core statistics\n");
>>>> return -1;
>>>> diff --git a/modules/cdp/worker.c b/modules/cdp/worker.c
>>>> index 5ab215c..4a45bc4 100644
>>>> --- a/modules/cdp/worker.c
>>>> +++ b/modules/cdp/worker.c
>>>> @@ -70,6 +70,7 @@ task_queue_t *tasks; /**< queue of tasks */
>>>> cdp_cb_list_t *callbacks; /**< list of callbacks for message
>>>> processing */
>>>>
>>>> extern unsigned int workerq_latency_threshold; /**<max delay for
>>>> putting task into worker queue */
>>>> +extern unsigned int workerq_length_threshold_percentage; /**<
>>>> default threshold for worker queue length, percentage of max queue length */
>>>> /**
>>>> * Initializes the worker structures, like the task queue.
>>>> */
>>>> @@ -207,6 +208,8 @@ void cb_remove(cdp_cb_t *cb) {
>>>> int put_task(peer *p, AAAMessage *msg) {
>>>>
>>>> struct timeval start, stop;
>>>> + int num_tasks, length_percentage;
>>>> +
>>>> long elapsed_useconds=0, elapsed_seconds=0, elapsed_millis=0;
>>>> lock_get(tasks->lock);
>>>>
>>>> @@ -246,6 +249,13 @@ int put_task(peer *p, AAAMessage *msg) {
>>>> LM_WARN("Error releasing tasks->empty semaphore > %s!\n",
>>>> strerror(errno));
>>>> lock_release(tasks->lock);
>>>>
>>>> + if(workerq_length_threshold_percentage > 0) {
>>>> + num_tasks = tasks->end - tasks->start;
>>>> + length_percentage = num_tasks/tasks->max*100;
>>>> + if(length_percentage > workerq_length_threshold_percentage) {
>>>> + LM_WARN("Queue length has exceeded length threshold
>>>> percentage [%i] and is length [%i]", length_percentage, num_tasks);
>>>> + }
>>>> + }
>>>> //int num_tasks = tasks->end - tasks->start;
>>>> //LM_ERR("Added task to task queue. Queue length [%i]",
>>>> num_tasks);
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> sr-dev mailing list
>>>> sr-dev at lists.sip-router.org
>>>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
>>>>
>>>
>>> _______________________________________________
>>> sr-dev mailing list
>>> sr-dev at lists.sip-router.org
>>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
>>>
>>>
>>
>
> This email is subject to the disclaimer of Smile Communications at http://www.smilecoms.com/home/email-disclaimer/ <http://www.smilecoms.com/disclaimer>
>
>
> _______________________________________________
> sr-dev mailing list
> sr-dev at lists.sip-router.org
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
>
>
--
VoIP Embedded, Inc.
http://www.voipembedded.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-dev/attachments/20150112/b978bf01/attachment-0001.html>
More information about the sr-dev
mailing list