[asterisk-users] Dahdi_dummy is more accurate than core timer?

Johan Wilfer lists at jttech.se
Thu Oct 3 02:52:42 CDT 2013


2013-10-02 17:12, Shaun Ruffell skrev:
> On Wed, Oct 02, 2013 at 01:17:15PM +0200, Johan Wilfer wrote:
>> If I did use the core timers in dahdi (not loading dahdi_dummy) I
>> got bad quality in the conferences and dahdi_test showed 99.6% as
>> worst.
>
> Hmm...this is the first report I've heard of dahdi_dummy being more
> performant than the core timer.
>
> I wonder if this has something to do with the fact that you're
> running under 2.6.32-5-openvz-amd64 which might be doing more work
> in the system timer (which is where the standard core timer work is
> processed).
>
> If you update to the latest 2.6.32-openvz kernel do you still have
> the audio problems in conferneces?

Okay, I guess it is just me then, that's a good thing :-)

As Debian have dropped support for openvz in the current release and 
squeeze will not recive support after 2014-05 I will need to update 
these machines anyway soon - that means a new kernel, and it seems every 
project I found uses the redhat-kernel.

I don't think I dare to make such a big change to production servers as 
dahdi_dummy works fine (for the users - they are the one that counts). 
What I have noticed from dahdi_dummy is that cpu0 is nearly 95% at ~250 
channels and that got me worried (perfect quality in the meetme's thought).

>> - Can anybody comment on why DAHDI with core timers drop down to
>>    99.6% occasionally?
>
> This is because when using the core timer, the timer is only
> scheduled to fire ever 4ms. The differences in each *individual*
> measurement you see is due to timer jitter + the increased interval
> leaking more of the slight jitter up to userspace. However, this
> isn't typically a problem when mixing audio in 20ms chunks by
> default as is typically done when you're using meetme conferences.
>
> The number that is generally more interesting is the "Cummulative
> Accuracy" which shows over the entire dahdi_test how close DAHDI was
> to processing the expected amount of audio.
>

> On another system with 10 ms timer ticks the jitter is increased, but even this
> system does not have any problems mixing audio in meetme conferences:
>
>    Best: 99.608% -- Worst: 99.418% -- Average: 99.531611%
>    Cummulative Accuracy (not per pass): 99.995
>
> When you explictly load the dahdi_dummy module, your results can
> change in a couple of ways.  1) dahdi_dummy tries to always schedule
> the system timer to fire at 1ms intervals (which it only will if the
> system is configured for CONFIG_HZ=1000).  2) If on a newer kernel,
> dahdi dummy will use kernel high resolution timers to increase the
> precision of the timer.  However this shouldn't be necessary since
> the jitter in the normal kernel timer should be small compared to
> all the other jitter in a voip system.

Thanks for this detailed explination of the inner workings of dahdi!
There are statements (mostly very old) that say that the results should 
not drop below 99.9 or you will have quality problems.

My observation of quality problems in connection with results at 99.6 
seemed to confirm this, but if I understand you correctly dahdi should 
tolerate this.

>
>> - Is a hardware-card for timing the most efficient way to get timing
>>    even if I just use the card for the timing?
>
> I personally do not think so. The most efficient way should just be
> to allow the normal kernel timers to also provide timing to your
> asterisk system without the overhead of processing another
> interrupt.
>
> So I guess I would be interested to hear if a kernel update is all
> you need to have good results with the core timer.
>

Seems very likley. I'll start running tests at the replacement-system. 
But now I know how to troubleshoot this problem.

On a sidenote, when I investigated the 95% cpu on the first core I did 
notice that all irq are hitting cpu0 (/proc/interrupts). I did some 
reading and installed irqbalance and now interrupts are spread evenly 
among the cores.

Can this cause issues for the core timers?


-- 
Johan Wilfer



More information about the asterisk-users mailing list