name mode size
..
DILog.cpp 100644 1.76kB
DILog.h 100644 762B
Makefile 100644 132B
Readme.di_log 100644 6.97kB
Readme.di_log
di_log Readme ------------- The di_log module provides a ring buffer logging facility which on request dumps the ring buffer contents either as result of the DI call or in a file on HD. dumping the ring buffer can be invoked via DI interface (for example remotely from the stats module). ring buffer size and string length can be customized at compile time, see DILog.h exported functions ------------------ help : return help string dumplog : return contents of buffer dumplogtodisk(string filename) : dump buffer contents into file examples of invocation through query_stats ------------------------------------------ ./query_stats -c "DI di_log help" ./query_stats -c "DI di_log dumplog" the dump will most probably be truncated due to string length constraint ./query_stats -c "DI di_log dumplogtodisk log_file.log" about performance ----------------- snprintf'ing and vsnprintf'ing all debug messages does consume quite some CPU power, especially on call setup and tear down as there are a lot of debug messages print out. for high cps with G711, this can hinder good performance. some numbers: for G711 announcement (from file) over loopback interface, the following was measured over 2000 calls using sipp and valgrind: call length CPU consumed by logging (log_fac_print, incl) 5s 34% 1s 58% for GSM announcement cpu usage of encoding relativates the one of logging : 5s 9% 1s 14% for iLBC announcement even more: 5s 1% 1s 4% for participants conference, 30s/ call, logging used participants codec logging CPU 50 G711 16% 10 GSM 0.8% 5 iLBC 0.4% valgrind command: valgrind --tool=callgrind --instr-atstart=no ./sems -f sems.conf -D 1 -E sipp command: conference: sipp -sf sippuac.xml -i 127.0.0.1 \ -rtp_echo -m 2000 -l 50 -d 30000 -s 8 127.0.0.1:5060 announcement 1s: sipp -sf sippuac.xml -i 127.0.0.1 \ -rtp_echo -m 2000 -l 50 -d 1000 -s 7 127.0.0.1:5060 announcement 5s: sipp -sf sippuac.xml -i 127.0.0.1 \ -rtp_echo -m 2000 -l 50 -d 5000 -s 7 127.0.0.1:5060 sippuac.xml is -sn uac scenario, with 5070 as contact (no target updating from contact implemented in sipp) sippuac.xml: --------------------------------------------------------------------------- <?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE scenario SYSTEM "sipp.dtd"> <!-- This program is free software; you can redistribute it and/or --> <!-- modify it under the terms of the GNU General Public License as --> <!-- published by the Free Software Foundation; either version 2 of the --> <!-- License, or (at your option) any later version. --> <!-- --> <!-- This program is distributed in the hope that it will be useful, --> <!-- but WITHOUT ANY WARRANTY; without even the implied warranty of --> <!-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the --> <!-- GNU General Public License for more details. --> <!-- --> <!-- You should have received a copy of the GNU General Public License --> <!-- along with this program; if not, write to the --> <!-- Free Software Foundation, Inc., --> <!-- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA --> <!-- --> <!-- Sipp default 'uac' scenario. --> <!-- --> <scenario name="Basic Sipstone UAC"> <!-- In client mode (sipp placing calls), the Call-ID MUST be --> <!-- generated by sipp. To do so, use [call_id] keyword. --> <send retrans="500"> <![CDATA[ INVITE sip:[service]@[remote_ip]:[remote_port] SIP/2.0 Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch] From: sipp <sip:sipp@[local_ip]:[local_port]>;tag=[pid]SIPpTag00[call_number] To: sut <sip:[service]@[remote_ip]:[remote_port]> Call-ID: [call_id] CSeq: 1 INVITE Contact: sip:sipp@[local_ip]:[local_port] Max-Forwards: 70 Subject: Performance Test Content-Type: application/sdp Content-Length: [len] v=0 o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip] s=- c=IN IP[media_ip_type] [media_ip] t=0 0 m=audio [media_port] RTP/AVP 0 a=rtpmap:0 PCMU/8000 ]]> </send> <recv response="100" optional="true"> </recv> <recv response="180" optional="true"> </recv> <recv response="183" optional="true"> </recv> <!-- By adding rrs="true" (Record Route Sets), the route sets --> <!-- are saved and used for following messages sent. Useful to test --> <!-- against stateful SIP proxies/B2BUAs. --> <recv response="200" rtd="true"> </recv> <!-- Packet lost can be simulated in any send/recv message by --> <!-- by adding the 'lost = "10"'. Value can be [1-100] percent. --> <send> <![CDATA[ ACK sip:[service]@[remote_ip]:5070 SIP/2.0 Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch] From: sipp <sip:sipp@[local_ip]:[local_port]>;tag=[pid]SIPpTag00[call_number] To: sut <sip:[service]@[remote_ip]:[remote_port]>[peer_tag_param] Call-ID: [call_id] CSeq: 1 ACK Contact: sip:sipp@[local_ip]:[local_port] Max-Forwards: 70 Subject: Performance Test Content-Length: 0 ]]> </send> <!-- This delay can be customized by the -d command-line option --> <!-- or by adding a 'milliseconds = "value"' option here. --> <pause/> <!-- The 'crlf' option inserts a blank line in the statistics report. --> <send retrans="500"> <![CDATA[ BYE sip:[service]@[remote_ip]:5070 SIP/2.0 Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch] From: sipp <sip:sipp@[local_ip]:[local_port]>;tag=[pid]SIPpTag00[call_number] To: sut <sip:[service]@[remote_ip]:[remote_port]>[peer_tag_param] Call-ID: [call_id] CSeq: 2 BYE Contact: sip:sipp@[local_ip]:[local_port] Max-Forwards: 70 Subject: Performance Test Content-Length: 0 ]]> </send> <recv response="200" crlf="true"> </recv> <!-- definition of the response time repartition table (unit is ms) --> <ResponseTimeRepartition value="10, 20, 30, 40, 50, 100, 150, 200"/> <!-- definition of the call length repartition table (unit is ms) --> <CallLengthRepartition value="10, 50, 100, 500, 1000, 5000, 10000"/> </scenario>