[linux-audio-user] Can't get rid of xruns

Florian Schmidt mista.tapas at gmx.net
Wed Mar 29 03:50:59 EST 2006


On Wed, 29 Mar 2006 09:57:50 +0200
Dominic Sacré <dominic.sacre at gmx.de> wrote:

> Hi,
> 
> I'm trying to set up my Ubuntu Dapper system to work reliably with 
> reasonably low latency, but I'm unable to really eliminate xruns. It works 
> quite well most of the time, but sooner or later I'll inevitably get 
> xruns, usually when starting/closing jack-apps, or sometimes when 
> starting/stopping playback.

Some jack apps are badly programmed and start up/shut down in a non
realtime safe way. I.e. jack-rack _always_ produces an xrun on shutdown.

Starting/Stopping  playback with what?

> My machine is an Athlon XP 3000+, with VIA chipset and 2 SATA disks.
> The sound card is an M-Audio Audiophile 2496, and my aim would be to run 
> jack at 5.8ms latency (-r44100 -p128 -n2) or less.

Which should be possible with a -rt kernel.

> I already tried pretty much everything I could thinks of, that is:
> 
> - Installed a realtime kernel (currently 2.6.16.1-rt11)

good, although it might be wise to try different versions.

> - Used the nv display driver instead of nvidia

good

> - Switched PCI slots around so that the Audiophile doesn't share an IRQ 
> with the graphics card (an IRQ solely for the Audiophile doesn't seem 
> possible, it now shares an IRQ with a SBlive)

which is ok

> - Changed filesystems from reiserfs to ext3 (/) and xfs (/home)

might be good. no idea. i never ad trouble with ext3. But besides ext2 i
never tried any other fs's ;) I heard bad things about xfs though. Do
you record to /home?

> I'm running jack at rtprio 70, and also set the sound card IRQ's priority 
> to 99, but none of that seems to make a difference.

good

> I have latency tracing enabled, but I can't make head or tail of it, to me 
> it looks like the xruns occur at random...
> 
> Now I'm at a loss. What else can I do?

If you are really willing to hunt these xruns down you can compile jackd
with --enable-preemption-check. You also need to have user triggered
tracing enabled in the -rt kernel for this.

Now everytime an app does rt unsafe stuff in its callback that causes
the app to lose the cpu to another app, the kernel will send it a
SIGUSR2 and the app will probably terminate due to it ot handling this
signal.

You will also get a stack trace in the syslog which tells you what
happened in the app and which app it was.

Flo

-- 
Palimm Palimm!
http://tapas.affenbande.org



More information about the Linux-audio-user mailing list