[linux-audio-user] Can't get rid of xruns
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:
> 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 126.96.36.199-rt11)
good, although it might be wise to try different versions.
> - Used the nv display driver instead of nvidia
> - 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.
> 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
You will also get a stack trace in the syslog which tells you what
happened in the app and which app it was.
More information about the Linux-audio-user