[OpenSER-Devel] [ openser-Patches-1907645 ] dialog: dialog profiling

SourceForge.net noreply at sourceforge.net
Thu Mar 6 18:38:07 CET 2008


Patches item #1907645, was opened at 2008-03-04 23:33
Message generated for change (Comment added) made by osas
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=743022&aid=1907645&group_id=139143

Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: modules
Group: ver devel
Status: Open
Resolution: None
Priority: 5
Private: No
Submitted By: Ovidiu Sas (osas)
Assigned to: Bogdan-Andrei Iancu (bogdan_iancu)
Summary: dialog: dialog profiling

Initial Comment:
Here is a patch for the dialog module that will allow dialog profiling.  This new enhancement to the dialog module will keep track of the number of dialogs/calls per 'profile'.

How is it working?
Two new dialog params are available:
 1. dlg_index_avp
 2. profiling_table_size
The "profiling_table_size" parameter will define the maximum numbers of profiles.  If a call needs to be accounted, the profile index shall be stored into the "dlg_index_avp" avp.  If the "dlg_index_avp" is not set (i.e. NULL), the call will not be profiled.

A new pseudo variable is available for holding the number of dialogs/calls per profile: "DLG_profile".
In order to get the number of dialogs/calls associated to a profile, the profile id must be passed as an index to the "DLG_profile" PV.  The index must follow into the [0,profiling_table_size range-1] range.


Config example:
modparam("dialog", "dlg_flag", 4)
modparam("dialog", "dlg_index_avp", "$avp(i:600)")
modparam("dialog", "profiling_table_size", 10)
...
  /* print the number of calls for profile 2 */
  xlog("L_INFO","$(DLG_profile[2])\n");
  /* or */
  $var(profiling) = 2;
  xlog("L_INFO","$(DLG_profile[$var(profiling)])\n");
...
  if (profiling) {
    /* account the call into profile 2*/
    $avp(i:600) = "2";
    /* or */
    $avp(i:600) = 2;
    /* or */
    $var(profiling) = 2;
    $avp(i:600) = $var(profiling);
  }
...


This patch is presented as a proof of concept and it is provided against current stable version of openser 1.3.

I would like to collect more feedbacks before proceeding with a full implementation for 1.4.


Bogdan, will this work for you?  I know that you had something similar in your TODO list, so I would like to have your opinion about this patch and merge the efforts in order to get this asap in the gate.


Regards,
Ovidiu Sas

----------------------------------------------------------------------

>Comment By: Ovidiu Sas (osas)
Date: 2008-03-06 12:38

Message:
Logged In: YES 
user_id=1395524
Originator: YES

Hi Bogdan,

I'm glad that we found common ground here :)
If you want to merge this out in 1.4, that's fine with me.
As I mentioned previously, this was a proof of concept work, so the code
is not optimized.  For instance, we should use atomic locks for storing
profiling counters.

Let me know when you can commit this in, and I will add some MI commands
for retrieving/manipulating the profiling counters.


Regards,
Ovidiu Sas

----------------------------------------------------------------------

Comment By: Bogdan-Andrei Iancu (bogdan_iancu)
Date: 2008-03-06 12:17

Message:
Logged In: YES 
user_id=1275325
Originator: NO

Hi Ovidiu,

This sounds interesting, especially as it overlaps with some of my ideas.
Give me some time to work out a merge.

Thanks and regards,
Bogdan

----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=743022&aid=1907645&group_id=139143



More information about the Devel mailing list