thanks for this great set of contributions. It is great to see that people and companies are investing their time and money in enhancing what exists instead of re-inventing the wheel when this is not needed (sometimes it is!). Newton once wrote a letter to Robert Hooke where he had those words: "If I have seen further it is by standing on the shoulders of Giants". That reflects a lot the Open Source (at least GPL) spirit.
I started to go through and integrate the first ones:
- dynamicpeer: no comment - SVN 68
- pausecleanup: no comment - SVN 69
- distpause: It applies and old behaviour is available even if GSL is not present - so I included this one - SVN 70. I agree with you that autoconf/autobuild is needed now. I'll try to see if I find some time for this.
I will go over the others quickly - maybe tomorrow. I will also update the doc accordingly.
At IBM research we have developed several enhancements for SIPp that
improve performance and flexibility. I have attached a .tar.gz of the
patches and a "series" file that lists them in the order they should be
applied (against the 2006/10/04 snapshot). I've included a brief
description of each of the patches below.
These patches allow SIPp to be used for our VoIP user-model based benchmark.
There are some internal scalability improvements that do not affect usage, and
also a few minor external changes to increase the flexibility of reporting and
To enable distributed pauses, you must compile with the GNU Scientific Library
(GSL). As SIPp does not have an autoconfiguration script, you create a file
named "local.mk" with the following lines:
You can obtain GSL from http://www.gnu.org/software/gsl/. GSL RPMs are
also available on many distributions, including RedHat 7-9, Fedora 1-5,
Redhat AS 4, and SuSE 9.X and 10.
The external changes to SIPp are one new command line option (-users), which
specifies a fixed number of users; the 'Q' key stops SIPp in its tracks (just
like control-C); and several modifications to the XML scenario file:
- The <pause /> item has three new types of pauses: normal, lognormal, and
exponential. To specify a statistically distributed pause add its name as a
parameter with a value (e.g., <pause normal="true" ... />).
- Normal pauses require a mean and standard deviation. For example:
<pause normal="true" mean="60000" stdev="15000" />
Provides a normal pause with a mean of 60 seconds (i.e. 60,000 ms) and a
standard deviation of 15 seconds. The mean and standard deviation are
specified as integer milliseconds.
- Lognormal pauses are specified in terms of the mean and standard deviation
of the normal distribution that is exponentiated. For example:
<pause lognormal="true" mean=" 12.28" stdev="1" />
Creates a distribution's whose natural logarithm has a mean of 12.28 and a
standard deviation of 1. The mean and standard deviation are specified as
double values (in milliseconds).
- Exponential pauses require an integer mean. For example:
<pause exponential="true" mean="900000" />
Creates an exponentially distributed pause with a mean of 15 minutes.
- Each send or receive message may start and end a response time duration.
Unmodified SIPp uses a single RTD value per call, thus the XML used a boolean
value to indicate starting an RTD (with start_rtd) and ending an RTD with
(rtd) as follows:
<recv response="200" rtd="true" />
Our new SIPp supports the same syntax, mapping "true" to RTD 1. We also
support an arbitrary number of RTD timers (determined at compile time,
currently 5). To use a new timer, specify start_rtd and rtd as an integer
from 1 to 5. You can view the new RTD timers by pressing 5, 6, 7, and 8.
- We also support five generic message counters. Simply add the new "counter"
parameter to a send or receive (from 1 to 5). When that message is
processed, we add one to the counter. For example:
<recv request="INVITE" counter="1" />
<recv request="BYE" counter="2" />
Increments counter 1 when the INVITE is recieved and counter 2 when the BYE
- The <nop /> item can be used for rtd, start_rtd, and count.
These patches apply to SIPp 2006-10-04. You can use the quilt tool to apply
these patches ( http://savannah.nongnu.org/projects/quilt/), or manually apply
them in the order listed in series (the following descriptions are also in
Use a dynamically allocated peer tag, this reduces the memory usage per
call by an order of magnitude.
Clean up the handling of the pause keyword.
Normal, lognormal, and exponentially distributed pauses. These pauses
are based on GSL, and the infrastructure is there for any type of
pause that someone wants to add.
Allows multiple response times to be counted.
Increments a generic counter on a recieve or send.
Divides calls into paused calls and running calls. Paused calls are
managed using a timing wheel ala Varghese's 1996 article.
The -users option begins users calls at startup, and maintains a fixed
number of calls. Only half of a timer cycle can be used for call
The 'Q' key (or control thread) sends a SIGINT to itself, thus causing
SIPp to quit immediately.
Allow nops to be used for RTDs and counts.
Allows the socket receive buffer to be increased on the command line.
Uses a custom version of tolower for strcasestr2.
Eliminates the need for memset of large strings ( e.g, there was a 20KB
memset for each message processed).
Uses port 5060 by default if the -rsa option does not specify a port.
Close all file descriptors after we create the child process.
'S' key dumps the screens to a file (this can be used over the control
socket, a signal cannot)
Add a standard deviation column for call length and response time
Increase the rate from n to m at some interval.
Check dialog_authentication before running a strstr on every message.
Add Retransmissions(P) and Retransmissions(C) columns to the stat file.
Allow EAGAIN to be handled gracefully more than once.
Allow -l 0 to be specified so that a UAC scenario can act as an open
loop workload generator.
(See attached file: sipp-patches-2006-10-04-ibm1.tar.gz)
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
Sipp-users mailing list