Capacity of single instance of Asterisk

Home » Asterisk Users » Capacity of single instance of Asterisk
Asterisk Users 11 Comments

Hi

Can someome give tested and proven information on Asterisk capabilities?

I have a server with 24 cores running at 2.4ghz and 16 GB RAM. How many concurrent SIP sessions I can run from single instance of Asterisk on this server? I wish to use G711 codec with echo cancel. And all calls needs to be recorded.

What will be impact on no of session when G729a is used?

Thanks & Regards,
Amit Patkar

11 thoughts on - Capacity of single instance of Asterisk

  • There are no such statistics. Your usage patterns are unique to you and depend on many factors. If you must look for the information then look in the mailing list archives or on voip-info.org.

  • What kind of capacity are you looking to achieve?

    From my experience, Asterisk is not really much of a RAM hog. A couple GB
    is good for a couple hundred simultaneous calls.

    With 4 ‘Intel(R) Xeon(TM) CPU 3.40GHz’ cores, I can handle a couple
    hundred simultaneous non-transcoding calls with no recording on Asterisk
    1.2.

    With 24 cores and 16 GB on tap, you will probably find other resource
    limitations before either CPU or RAM are a limiting factor.

    Personally, I’m a ‘don’t put all your eggs in one basket’ kind of guy.

    Assuming a simplistic linear relationship between my host and yours, what
    will you do when it crashes with 1600 calls in progress? What will you do
    when you need to install patches or upgrade or …

    I like a couple of instances of OpenSIPS in front of several Asterisk
    instances, even if OpenSIPS is on the same boxes as Asterisk.

    Significant.

  • Assuming that transcoding is involved; if all the system is doing is
    passing through G.729A media streams, and recording them in unmixed
    G.729A format, there’s no additional impact (the system might actually
    perform slightly better, as there is substantially less data being
    shuffled around).

  • Hi Steve

    Thanks for your input. Please check my comments.

    What kind of capacity are you looking to achieve?

    [Amit Patkar] Some where 2400 G.711 sessions with recording. So approx 1200
    calls.

    is good for a couple hundred simultaneous calls.

    With 4 ‘Intel(R) Xeon(TM) CPU 3.40GHz’ cores, I can handle a couple hundred
    simultaneous non-transcoding calls with no recording on Asterisk 1.2.

    With 24 cores and 16 GB on tap, you will probably find other resource
    limitations before either CPU or RAM are a limiting factor.

    Personally, I’m a ‘don’t put all your eggs in one basket’ kind of guy.

    Assuming a simplistic linear relationship between my host and yours, what
    will you do when it crashes with 1600 calls in progress? What will you do
    when you need to install patches or upgrade or …

    I like a couple of instances of OpenSIPS in front of several Asterisk
    instances, even if OpenSIPS is on the same boxes as Asterisk.

    [Amit Patkar] I completely agree with you on distributing the load. At the
    same time, I am looking at juicing hardware as well. Can you share the
    number instead of saying couple hundreds?

    Significant.

    [Amit Patkar] Can I assume 30% reduction? Or it would be much more.

  • Hi Kevin,

    Thank for your views. Where as no one is ready to share real numbers. I am
    looking at benchmarks so that I can plan for resources.
    Since asterisk project is active for so many years, I was expecting some
    published numbers.

    Thanks & Regards,
    Amit Patkar

    Assuming that transcoding is involved; if all the system is doing is
    passing through G.729A media streams, and recording them in unmixed
    G.729A format, there’s no additional impact (the system might actually
    perform slightly better, as there is substantially less data being
    shuffled around).

  • You have completely missed the point that other posters have made
    already on this list. Let me try to express it another way. Let’s say
    that you were browsing at an engine manufacturer’s website, looking at
    V-8 gasoline engines, and you found one that you liked, that you felt
    had a good combination of features for your project. If you then
    contacted the manufacturer and asked them ‘how fast can this engine make
    a car travel’, what do you think their response would be?

    Asterisk is a toolkit; it can be configured an infinite number of ways.
    Any performance measurements that are made and published apply *only* to
    the specific configuration that was measured; it may or may not be
    possible to extrapolate those into other configurations, or higher/lower
    capacities.

    There are lots of published numbers of Asterisk being used in various
    ways and for different purposes; whether any of them apply to your
    specific project is debatable, and relying on them for your project
    would carry some level of risk. Whether you are willing to accept that
    risk or not is up to you.

    In your specific case, as has been mentioned already, it is extremely
    unlikely that your proposed hardware would have any trouble with
    Asterisk 1.8 handling 2,400 SIP call legs (1,200 bridged calls), with
    the same codec being used on both sides. When you add in transcoding,
    that will change the system significantly, and depending on the codecs
    involved, the hardware may still be able to handle the load. I know from
    experiments I did years ago with an 8-core Xeon machine (2nd generation
    Xeon, so nowhere near as powerful as modern Xeon cores) that the Digium
    G.729 codec (software implementation) could handle over 800 channels
    with Asterisk 1.4; I think it’s reasonable to expect that given the
    hardware you’ve proposed, transcoding 1,200 channels between G.711 ulaw
    and G.729A is likely to be achievable.

    Recording, though, is an entirely different matter. Again, since you
    haven’t provided specifics, let’s assume you are going to record the
    call legs ‘as is’ (in their native formats, unmixed). If you had 2,400
    G.711 ulaw call legs to record, some simple math says that you’d need be
    able to push 150 megabytes per second of data onto your filesystem, on
    top of all the ‘normal’ work that Asterisk is doing. That’s rather a
    lot, and will require that your filesystem and disk subsystem be
    extremely fast and well tuned.

    If the call legs were all G.729A, then the amount of data to write would
    drop to 18.75 megabytes per second, which is achievable even with
    inexpensive SATA disks.

    If you want the calls recorded in ‘mixed’ form (most likely in 16-bit
    signed linear PCM audio, since that’s the easiest format to use outside
    of Asterisk), you’d double the amount of data going into the filesystem
    (now 300 megabytes per second) *and* you’d add in the CPU consumption of
    having to decode the incoming media streams and mix them. For G.711 ulaw
    this is pretty cheap and would likely not be an issue; for G.729A it’s
    somewhat more expensive, but still might not be a problem given the
    amount of CPU capacity you have proposed.

    Now do you understand why ‘benchmarks’ don’t provide much value for
    something like Asterisk?

  • In the universe of possible configurations…

    This is our ‘slow period,’ but on my hardware, handling my application, at
    this moment in time, one of my hosts is handling 98 calls, has (as
    reported by ‘top -d 30’) a load average of 0.79, and CPU utilization of
    2.3% user and 8.9% system. Asterisk is using 85m of virtual memory and has
    35m resident.

    I’ve seen 300 calls on the same host, but that was not a limit of the
    host, just how many callers were using the service at that point in time.

    Note that my application (free chat rooms) is probably more resource
    intensive than your undisclosed application because all the frames from
    the participants have to be mixed with voodoo magic in the Zaptel driver.

    Also note that my application uses a bunch of AGIs. Each call invokes at
    least 6 AGIs — all requiring access to a MySQL database. All the AGIs are
    written in C.

    If you can draw any conclusions from the above and relate it to your
    application — congratulations 🙂

  • Am 13.03.2012 21:13, schrieb Steve Edwards:
    having a nearly same hardware setup as yours (double xeon 2,3 ghz six
    core with hyperthread = 24 cores and 12 GB of ram) i was able to push
    asterisk 10 up to 13500 concurrent calls at around 1800 calls per second.

    but this was only sip signaling. i also done some load tests with 8000
    concurrent calls doing a playback of a unique file for each call and the
    load was around 30 but sound quality still sounds ok.

    but no one will every build a single host system for such many calls,
    you will have only problems with it.

    a typical sip proxy can handle much more sip messages as asterisk and
    you can easy spread the load over different machines.

    i guess you should start to try it out what your system and your
    asterisk configuration can handle without problems and do some educated
    guesses about it.

    so its not about numbers cause nobody can really answer this question
    without trying it out and there will still be too much space for
    difference to give you an exactly amount.

    best regards

    stefan

  • We’re running some 400 simultaneous calls with recording and no
    transcoding on a 2xQuad-core Intel boxes, 16GB RAM. The box is serving
    SIP clients and passes calls over an IAX2 trunk to the PSTN-connected
    box. Load average rarely goes above 0.5.

    Recording is done on a RAID array attached to a separate SCSI
    controller, which makes a lot of difference to performance.

    Regards,

  • Hi,

    Appreciate everyone for your valuable inputs. All these inputs provided by
    you are really useful.

    Thanks & Regards,
    Amit Patkar