[asterisk-dev] RTP streams suddenly stop

Tony Mountifield tony at softins.clara.co.uk
Mon Mar 29 12:01:34 CDT 2010


Shaun, many thanks for your reply - much appreciated!

In article <4BB0D58E.1010304 at digium.com>,
Shaun Ruffell <sruffell at digium.com> wrote:
> On 03/29/2010 11:03 AM, Tony Mountifield wrote:
> > In article <hm3o5a$mno$1 at softins.clara.co.uk>,
> > Tony Mountifield <tony at softins.clara.co.uk> wrote:
> >>
> >> My main question at the moment is "what mechanism could stall all RTP streams?",
> >> and a clue is the almost-exact five minutes for which it happens.
> > 
> > Well, FINALLY, I have managed to discover what is causing this problem,
> > although I haven't yet fixed it.
> > 
> > The problem is in ztdummy. It is the one from zaptel-1.2.27, and has been
> > compiled with USE_RTC. The OS is CentOS 4 with kernel 2.6.9-78.0.22.ELsmp.
> > The system has a pair of quad-core E5420 Xeons.
> > 
> > By monitoning /proc/interrupts every second, I have discovered that when
> > the problem occurs, the RTC interrupts stop counting up. After exactly
> > five minutes, they start up again. Obviously the lack of timing from
> > ztdummy is causing Meetme and file streaming to stall.
> > 
> > So, does anyone have any ideas why the RTC interrupt might stall for exactly
> > five minutes? I have only ever seen it on this one system. Nothing is logged
> > in any of the system logs at the time it occurs.
> > 
> > I would quite like to try the HPET mode of ztdummy, but it looks like this
> > requires a much newer kernel, 2.6.22, which is way newer than even CentOS 5.
> > Is there any other way to do this?
> 
> I noticed this as well when looking at issue 13930 [1]. Perhaps instead of
> using the HPET timer, you could back port the changes in dahdi_dummy that
> makes the default kernel timer usable (assuming you can't update)?

I've had a look at the diff, and they look very straightforward changes to do,
so I will indeed backport them.

Have there been no reports of adverse effects from calling zt_recieve() and
zt_transmit() in batches of four every 4ms instead of evenly at 1ms intervals?

> Best guess as to why it might stop though is probably ntp or something is
> running on that system, and it gets out of sync, then 5 minutes later when
> the kernel tries to sync back the time, it gets kicked off again.  Don't
> quote me on that..just a guess.

No, it won't be to do with NTP, more likely hardware. It's the actual RTC
interrupt from the 146818-lookalike in the chipset that is stopping (or else
being masked out by something else).

> [1] https://issues.asterisk.org/view.php?id=13930#99444

This is very useful indeed - thanks again!

Tony

> -- 
> Shaun Ruffell
> Digium, Inc. | Linux Kernel Developer
> 445 Jan Davis Drive NW - Huntsville, AL 35806 - USA
> Check us out at: www.digium.com & www.asterisk.org
-- 
Tony Mountifield
Work: tony at softins.co.uk - http://www.softins.co.uk
Play: tony at mountifield.org - http://tony.mountifield.org



More information about the asterisk-dev mailing list