[Freeswitch-users] Strange Performance when using as SBC

rod kawarod at laposte.net
Fri Jan 30 03:42:33 PST 2009


Dear list,

I've been playing with freeswitch for some time (2 months) and the fact 
is that I'm very pleased with the functionnalities of this software.

I'd like to use FS as a SBC handling media and I'm doing some tests with 
sipp to load the machine but I'm unable to bridge more than 60 calls 
without seeing the CPU being loaded at 100%. I'm sure something is going 
wrong with my setup but I'm unable to see what.

The test machine has the following specs:
    Athlon XP 3500+ with 2GB of memory (I know this is not a high end 
machine :p)

Freeswitch:/opt/freeswitch/log# cat /proc/cpuinfo
processor       : 0
vendor_id       : AuthenticAMD
cpu family      : 15
model           : 95
model name      : AMD Athlon(tm) 64 Processor 3500+
stepping        : 2
cpu MHz         : 2199.973
cache size      : 512 KB
fpu             : yes
fpu_exception   : yes
cpuid level     : 1
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge 
mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext fxsr_opt 
rdtscp lm 3dnowext 3dnow up rep_good pni cx16 lahf_lm svm extapic cr8_legacy
bogomips        : 4402.97
TLB size        : 1024 4K pages
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management: ts fid vid ttp tm stc

I installed FS on a fresh debian 64:
    Linux Freeswitch 2.6.26-1-amd64 #1 SMP Sat Jan 10 17:57:00 UTC 2009 
x86_64 GNU/Linux

I set the ulimit parameters like those on the website:
    freeswitch at internal> ...
Freeswitch:/opt/free-svn/bin# ulimit -a
core file size          (blocks, -c) unlimited
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) unlimited
max locked memory       (kbytes, -l) unlimited
max memory size         (kbytes, -m) unlimited
open files                      (-n) 999999
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) unlimited
real-time priority              (-r) 0
stack size              (kbytes, -s) 244
cpu time               (seconds, -t) unlimited
max user processes              (-u) unlimited
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited


My network setup is the following:

    SIPP machine (10.10.10.1/24)----------------vlan 55 
----------(10.10.10.254/24) FS (10.10.20.254/24)-------------- vlan56 
-------------------(10.10.20.100/24) OTHER STOCK FS


I launched sipp with:
    sipp -sn uac_pcap -s 9999 -r 10 -l 80 -d 60000 -mi 10.10.10.1 -i 
10.10.10.1 -mp 25000 10.10.10.254:5060

The dialplan on FS is very simple:
<?xml version="1.0" encoding="utf-8"?>
<!-- http://wiki.freeswitch.org/wiki/Dialplan_XML -->
<include>
  <context name="default">

     <extension name="hold_music_bridge">
      <condition field="destination_number" expression="^9999$">
        <action application="answer"/>
        <action application="bridge" 
data="sofia/external/9999 at 10.10.20.100"/>
        </condition>
    </extension>
   
  </context>

</include>

FreeSWITCH Version 1.0.trunk (11560M) Started.
Crash Protection [Disabled]
Max Sessions[1000]
Session Rate[100]
SQL [Enabled]


The test is very simple: sipp dial 9999 that matches in my FS dialplan 
and this is bridged to an other FS machine playing music on hold.
When I launch "top"  I see after 30 to 40 s that FS consumes all the CPU 
ressources (with a mean of 50-60 % before), with 80 calls.
When I set 70 calls, I have to wait 70-80 s before seeing the same issue.

Presence is set to false on the 2 profile.

I have the same issue with FS 1.0.2 that' s why I tried FS 11560.

When I use the FS machine as a router to test the packet per second 
performance, I'm reaching 100Mbps with 8000pps in each direction (from 
vlan 55 to vlan56) with less than 12% CPU. So that I don't think there's 
an issue with the network.

Here is an "mpstat -P ALL 1" to show you what's happening suddenly with 
70 bridge calls:
12:31:26     CPU   %user   %nice    %sys %iowait    %irq   %soft  
%steal   %idle    intr/s
12:31:27     all    3,00    0,00    3,00    0,00    1,00    4,00    
0,00   89,00   6241,00
12:31:27       0    3,00    0,00    3,00    0,00    1,00    4,00    
0,00   89,00   6241,00

12:31:27     CPU   %user   %nice    %sys %iowait    %irq   %soft  
%steal   %idle    intr/s
12:31:28     all   14,14    0,00   56,57    0,00    2,02    5,05    
0,00   22,22   6035,35
12:31:28       0   14,14    0,00   56,57    0,00    2,02    5,05    
0,00   22,22   6035,35

12:31:28     CPU   %user   %nice    %sys %iowait    %irq   %soft  
%steal   %idle    intr/s
12:31:29     all   24,75    0,00   67,33    0,00    0,99    6,93    
0,00    0,00   5483,17
12:31:29       0   24,75    0,00   67,33    0,00    0,99    6,93    
0,00    0,00   5483,17


The CPU is going from 89% idle to 0% in less than 2 seconds.

I know that I don't have to expect too much from this kind of hardware, 
but it seems strange that the CPU power vanished so suddenly.

Thanks a lot for the guys that have read this long mail :p

kind regards,
rod








More information about the FreeSWITCH-users mailing list