[PlanetCCRMA] Too many xruns w/Delta 66 on F7

Fernando Lopez-Lezcano nando at ccrma.Stanford.EDU
Fri Jan 18 09:02:01 2008


[sorry for the delay, I've been on vacation]

On Wed, 2007-12-26 at 13:14 -0500, Paul Coccoli wrote:
> Hi all,
> 
> I've been running Planet CCRMA for years and have generally been happy
> with it.  Since moving to Fedora 7, however, I can't get my jack
> latency settings as low as I'd like.  I get periodic xruns (without
> any jack apps running) at anything below 1024 frames and 2 periods.

Wow, that's bad. 

> The hardware is an Athlon 1800, 1G RAM, with a M-Audio Delta 66.  Same
> hardware I've had for years, and I could swear I had better
> performance with FC5 (and FC2, and RH9).
> 
> I've looked at everything I can think of:
> 
> I've got the latest Planet kernel:
> paul@boon ~]$ uname -r
> 2.6.22.6-1.rt9.5.fc7.ccrmart
> 
> I bumped the PCI latency timer up on the ICE1712 chip (the Delta):
> 00:0a.0 Multimedia audio controller: VIA Technologies Inc. ICE1712 [Envy24] PCI
> Multi-Channel I/O Controller (rev 02)
>         Subsystem: VIA Technologies Inc. M-Audio Delta 66
>         Flags: bus master, medium devsel, latency 248, IRQ 20
> 
> IRQ stuff looks fine to me (audio on IRQ 20):
> [paul@boon ~]$ cat /proc/interrupts
>            CPU0
>   0:  272253996   IO-APIC-edge      timer
>   1:          2   IO-APIC-edge      i8042
>   6:          6   IO-APIC-edge      floppy
>   7:          0   IO-APIC-edge      parport0
>   8:          0   IO-APIC-edge      rtc0
>   9:          0   IO-APIC-fasteoi   acpi
>  12:          4   IO-APIC-edge      i8042
>  14:     893299   IO-APIC-edge      libata
>  15:    5410951   IO-APIC-edge      libata
>  16:    1602810   IO-APIC-fasteoi   uhci_hcd:usb1, uhci_hcd:usb2,
> uhci_hcd:usb3, ehci_hcd:usb4
>  18:          2   IO-APIC-fasteoi   ohci1394
>  19:    1374546   IO-APIC-fasteoi   eth0
>  20:    3078836   IO-APIC-fasteoi   ICE1712
> NMI:          0
> LOC:  319262183
> ERR:          0
> MIS:          0
> 
> The only IRQ with a higher priority is the RTC on 8 (seems sensible):
> [paul@boon ~]$ ps -e -o pid,cmd,pri | grep IRQ
>    61 [IRQ-9]                      90
>   304 [IRQ-12]                    104
>   305 [IRQ-1]                     105
>   322 [IRQ-16]                    110
>   345 [IRQ-14]                     90
>   346 [IRQ-15]                     90
>   673 [IRQ-6]                      90
>   910 [IRQ-8]                     120
>   942 [IRQ-18]                     90
>   948 [IRQ-7]                      90
>  1034 [IRQ-20]                    115
>  1498 [IRQ-19]                     90

What's the output of:
  /sbin/service rtirq status

(that's the realtime priorities of processes)

> Jackd priority looks right (I assume the 100 is the watchdog, 90 is
> the audio thread?):

That is weird. The priority of the main jack process should be around 60
if I remember correctly. 

> [paul@boon ~]$ ps -mo pid,cmd,pri -C jackd
>   PID CMD                         PRI
> 31851 jackd -R -P50 -dalsa -dhw:0   -
>     - -                            19
>     - -                            19
>     - -                            19
>     - -                           100
>     - -                            90
> 
> QJackctl is using this:
> [paul@boon ~]$ cat .jackdrc
> jackd -R -P50 -dalsa -dhw:0 -r44100 -p256 -n2

You should not force the priority. The default that the Planet CCRMA
jack uses should be good. "50" is too low for the new kernels, I think
the default for jackd now is 60 (or so). You also need to have rtirq
installed to tune the priorities of the various interrupts. 

-- Fernando


> And yet, xruns:
> 21:40:37.506 Startup script...
> 21:40:37.512 artsshell -q terminate
> JACK tmpdir identified as [/dev/shm]
> 21:40:37.877 Startup script terminated with exit status=256.
> 21:40:37.879 JACK is starting...
> 21:40:37.884 jackd -R -P50 -dalsa -dhw:0 -r44100 -p256 -n2
> 21:40:37.903 JACK was started with PID=32405 (0x7e95).
> jackd 0.103.0
> Copyright 2001-2005 Paul Davis and others.
> jackd comes with ABSOLUTELY NO WARRANTY
> This is free software, and you are welcome to redistribute it
> under certain conditions; see the file COPYING for details
> JACK compiled with System V SHM support.
> loading driver ..
> Enhanced3DNow! detected
> apparent rate = 44100
> creating alsa driver ... hw:0|hw:0|256|2|44100|0|0|nomon|swmeter|-|32bit
> control device hw:0
> configuring for 44100Hz, period = 256 frames, buffer = 2 periods
> ALSA: final selected sample format for capture: 32bit little-endian
> ALSA: use 2 periods for capture
> ALSA: final selected sample format for playback: 32bit little-endian
> ALSA: use 2 periods for playback
> 21:40:40.166 Server configuration saved to "/home/paul/.jackdrc".
> 21:40:40.168 Statistics reset.
> 21:40:40.169 Client activated.
> 21:40:40.171 Audio connection change.
> 21:40:40.199 Audio connection graph change.
> JACK tmpdir identified as [/dev/shm]
> Enhanced3DNow! detected
> 21:40:40.374 Audio active patchbay scan...
> 21:41:11.971 XRUN callback (1).
> delay of 11622.000 usecs exceeds estimated spare time of 5619.000; restart ...
> **** alsa_pcm: xrun of at least 0.054 msecs
> 21:41:21.684 XRUN callback (2).
> 
> Any help would be appreciated.  What have I missed?