Kamailio-开源SIP软交换平台

中国第一个专注Kamailio SIP 软交换技术分享平台

用户工具

站点工具


benchmark_config_file_benchmarking_released

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

benchmark_config_file_benchmarking_released [2017/09/06 10:12] (当前版本)
james_zhu 创建
行 1: 行 1:
 +====== Benchmark Module ======
  
 +==== Bastian Friedrich ====
 +
 +Collax GmbH\\ ​
 +
 +''<​bastian.friedrich@collax.com>''​
 +
 +==== Daniel-Constantin Mierla ====
 +
 +''<​miconda@gmail.com>''​
 +
 +=== Edited by ===
 +
 +==== Bastian Friedrich ====
 +
 +''<​bastian.friedrich@collax.com>''​
 +
 +Copyright © 2007 Collax GmbH
 +
 +Copyright © 2007 Voice System SRL
 +
 +----
 +
 +**Table of Contents**
 +
 +  * **1. Admin Guide** ​
 +    * **1. Overview** ​
 +    * **2. Dependencies** ​
 +      * **2.1. Kamailio Modules** ​
 +      * **2.2. External Libraries or Applications** ​
 +    * **3. Parameters** ​
 +      * **3.1. enable (int)** ​
 +      * **3.2. granularity (int)** ​
 +      * **3.3. loglevel (int)** ​
 +    * **4. Functions** ​
 +      * **4.1. bm_start_timer(name)** ​
 +      * **4.2. bm_log_timer(name)** ​
 +    * **5. Exported Variables** ​
 +      * **5.1. $BM_time_diff** ​
 +    * **6. RPC Commands** ​
 +      * **6.1. benchmark.enable_global** ​
 +      * **6.2. benchmark.enable_timer** ​
 +      * **6.3. benchmark.granularity** ​
 +      * **6.4. benchmark.loglevel** ​
 +    * **7. Example of usage** ​
 +  * **2. Developer Guide** ​
 +    * **1. Available Functions** ​
 +      * **1.1. bm_register(name,​ mode, id)** 
 +      * **1.2. bm_start(id)** ​
 +      * **1.3. bm_log(id)** ​
 +    * **2. Benchmark API Example** ​
 +
 +**List of Examples**
 +
 +  * **1.1. Set enable parameter** ​
 +  * **1.2. Set granularity parameter** ​
 +  * **1.3. Set loglevel parameter** ​
 +  * **1.4. bm_start_timer usage** ​
 +  * **1.5. bm_log_timer usage** ​
 +  * **1.6. Enabling a timer** ​
 +  * **1.7. benchmark usage** ​
 +  * **2.1. Using the benchmark module'​s API from another module** ​
 +
 +====== Chapter 1. Admin Guide ======
 +
 +**Table of Contents**
 +
 +  * **1. Overview** ​
 +  * **2. Dependencies** ​
 +    * **2.1. Kamailio Modules** ​
 +    * **2.2. External Libraries or Applications** ​
 +  * **3. Parameters** ​
 +    * **3.1. enable (int)** ​
 +    * **3.2. granularity (int)** ​
 +    * **3.3. loglevel (int)** ​
 +  * **4. Functions** ​
 +    * **4.1. bm_start_timer(name)** ​
 +    * **4.2. bm_log_timer(name)** ​
 +  * **5. Exported Variables** ​
 +    * **5.1. $BM_time_diff** ​
 +  * **6. RPC Commands** ​
 +    * **6.1. benchmark.enable_global** ​
 +    * **6.2. benchmark.enable_timer** ​
 +    * **6.3. benchmark.granularity** ​
 +    * **6.4. benchmark.loglevel** ​
 +  * **7. Example of usage** ​
 +
 +===== 1. Overview =====
 +
 +This module helps developers to benchmark their module functions. By adding this module'​s functions via the configuration file or through its API, Kamailio can log profiling information for every function.
 +
 +The duration between calls to start_timer and log_timer is stored and logged via Kamailio'​s logging facility. Please note that all durations are given as microseconds (don't confuse with milliseconds!).
 +
 +===== 2. Dependencies =====
 +
 +==== 2.1. Kamailio Modules ====
 +
 +The following modules must be loaded before this module:
 +
 +  * No dependencies on other Kamailio modules. ​
 +
 +==== 2.2. External Libraries or Applications ====
 +
 +The following libraries or applications must be installed before running Kamailio with this module loaded:
 +
 +  * None. 
 +
 +===== 3. Parameters =====
 +
 +==== 3.1. enable (int) ====
 +
 +Even when the module is loaded, benchmarking is not enabled per default. This variable may have three different values:
 +
 +  * -1 - Globally disable benchmarking ​
 +  * 0 - Enable per-timer enabling. Single timers are inactive by default and can be activated through the RPC interface as soon as that feature is implemented. ​
 +  * 1 - Globally enable benchmarking ​
 +
 +Default value is “0”.
 +
 +**Example 1.1. Set ''​enable''​ parameter**
 +
 +<​code>​
 +...
 +modparam("​benchmark",​ "​enable",​ 1)
 +...
 +</​code>​
 +
 +\\ ==== 3.2. granularity (int) ====
 +
 +Logging normally is not done for every reference to the log_timer() function, but only every n'th call. n is defined through this variable. A sensible granularity seems to be 100.
 +
 +Default value is “1”.
 +
 +**Example 1.2. Set ''​granularity''​ parameter**
 +
 +<​code>​
 +...
 +modparam("​benchmark",​ "​granularity",​ 500)
 +...
 +</​code>​
 +
 +\\ ==== 3.3. loglevel (int) ====
 +
 +Set the log level for the benchmark logs. These levels should be used:
 +
 +  * -5 - L_ALERT ​
 +  * -4 - L_BUG 
 +  * -3 - L_CRIT ​
 +  * -2 - L_CRIT (no prefix) ​
 +  * -1 - L_ERR 
 +  * 0 - L_WARN ​
 +  * 1 - L_NOTICE ​
 +  * 2 - L_INFO ​
 +  * 3 - L_DBG 
 +
 +Default value is “3” (L_INFO).
 +
 +**Example 1.3. Set ''​loglevel''​ parameter**
 +
 +<​code>​
 +...
 +modparam("​benchmark",​ "​loglevel",​ 4)
 +...
 +</​code>​
 +
 +\\ This will set the logging level to L_DBG.
 +
 +===== 4. Functions =====
 +
 +==== 4.1. bm_start_timer(name) ====
 +
 +Start timer “name”. A later call to “bm_log_timer()” logs this timer..
 +
 +**Example 1.4. ''​bm_start_timer''​ usage**
 +
 +<​code>​
 +...
 +bm_start_timer("​test"​);​
 +...
 +</​code>​
 +
 +\\ ==== 4.2. bm_log_timer(name) ====
 +
 +This function logs the timer with the given ID. The following data are logged:
 +
 +  * Last msgs is the number of calls in the last logging interval. This equals the granularity variable. ​
 +
 +  * Last sum is the accumulated duration in the current logging interval (i.e. for the last “granularity” calls). ​
 +
 +  * Last min is the minimum duration between start/​log_timer calls during the last interval. ​
 +
 +  * Last max - maximum duration. ​
 +
 +  * Last average is the average duration between bm_start_timer() and bm_log_timer() since the last logging. ​
 +
 +  * Global msgs number of calls to log_timer. ​
 +
 +  * Global sum total duration in microseconds. ​
 +
 +  * Global min... You get the point. :) 
 +
 +  * Global max also obvious. ​
 +
 +  * Global avg possibly the most interesting value. ​
 +
 +**Example 1.5. ''​bm_log_timer''​ usage**
 +
 +<​code>​
 +...
 +bm_log_timer("​test"​);​
 +...
 +</​code>​
 +
 +\\ ===== 5. Exported Variables =====
 +
 +Exported pseudo-variables are listed in the next sections.
 +
 +==== 5.1. $BM_time_diff ====
 +
 +$BM_time_diff - the time difference elapsed between calls of bm_start_timer(name) and bm_log_timer(name). The value is 0 if no bm_log_timer() was called.
 +
 +===== 6. RPC Commands =====
 +
 +==== 6.1. benchmark.enable_global ====
 +
 +Enables/​disables the module. Parameter may be -1, 0 or 1. See discription of "​enable"​ parameter.
 +
 +==== 6.2. benchmark.enable_timer ====
 +
 +Enable or disable a single timer. The following example enables timer "​test"​ (the second parameter must be 0 to disable):
 +
 +**Example 1.6. Enabling a timer**
 +
 +<​code>​
 +...
 +kamcmd benchmark.enable_timer test 1
 +...
 +</​code>​
 +
 +\\ ==== 6.3. benchmark.granularity ====
 +
 +Modifies the benchmarking granularity. See "​granularity"​ variable.
 +
 +==== 6.4. benchmark.loglevel ====
 +
 +Modifies the module log level. See "​loglevel"​ variable.
 +
 +===== 7. Example of usage =====
 +
 +Measure the duration of user location lookup.
 +
 +**Example 1.7. benchmark usage**
 +
 +<​code>​
 +...
 +bm_start_timer("​usrloc-lookup"​);​
 +lookup("​location"​);​
 +bm_log_timer("​usrloc-lookup"​);​
 +...
 +</​code>​
 +
 +\\ ====== Chapter 2. Developer Guide ======
 +
 +**Table of Contents**
 +
 +  * **1. Available Functions** ​
 +    * **1.1. bm_register(name,​ mode, id)** 
 +    * **1.2. bm_start(id)** ​
 +    * **1.3. bm_log(id)** ​
 +  * **2. Benchmark API Example** ​
 +
 +The benchmark module provides an internal API to be used by other Kamailio modules. The available functions are identical to the user exported functions.
 +
 +Please note that this module is intended mainly for developers. It should be used with caution in production environments.
 +
 +===== 1. Available Functions =====
 +
 +==== 1.1. bm_register(name,​ mode, id) ====
 +
 +This function register a new timer and/or returns the internal ID associated with the timer. mode controls the creation of new timer if not found. id is to be used by start and log timer functions.
 +
 +==== 1.2. bm_start(id) ====
 +
 +This function equals the user-exported function bm_start_timer. The id is passed as an integer, though.
 +
 +==== 1.3. bm_log(id) ====
 +
 +This function equals the user-exported function bm_log_timer. The id is passed as an integer, though.
 +
 +===== 2. Benchmark API Example =====
 +
 +**Example 2.1. Using the benchmark module'​s API from another module**
 +
 +<​code>​
 +...
 +#include "​../​benchmark/​benchmark.h"​
 +...
 +struct bm_binds bmb;
 +...
 +...
 +/* load the benchmarking API */
 +if (load_bm_api( &bmb )!=0) {
 +    LM_ERR("​can'​t load benchmark API\n"​);​
 +    goto error;
 +}
 +...
 +...
 +/* Start/log timers during a (usually user-exported) module function */
 +bmp.bm_register("​test",​ 1, &id)
 +bmb.bm_start(id);​
 +do_something();​
 +bmb.bm_log(id);​
 +...
 +</​code>​
 +
 +\\
benchmark_config_file_benchmarking_released.txt · 最后更改: 2017/09/06 10:12 由 james_zhu