[linux-audio-user] xruns - FC2/Planet(custom) vs. Gentoo(custom)

Mark Knecht markknecht at gmail.com
Sun Oct 3 13:09:41 EDT 2004


Hi,
   As usual, this is a bit long as it's a difficult subject to explain
completely. Sorry. Read only if you are interested in xrun problems
under 2.6 kernels.

   I'm on a quest to get my low latency kernel situation handled
better then it has been in the past. On my Planet box, which is an
older 500MHz P3 box, I still run a 2.4 series kernel supplied by
Fernando and it works well. On my Gentoo laptop, which in the past has
been more of an email/soft-synth machine, latency didn't matter as
much, but with Ardour approaching 1.0, and with jack_fst working very
will with some Native Instrument VSTs, I'd like to get my Gentoo box
up to world class. The hard part, however, is that the chipset in my
laptop requires the use of >=2.6.3 kernels to get hard drive DMA
support. The machine under test is a Compaq Presario R3070us laptop -
3GHz P4, 512MB, 80GB, ATI Radeon Mobility, CD-RW/DVD+RW with on-board
ATI sound built in. It has three operating systems - Win XP Pro for
remote Pro Tools recording, Gentoo Linux and FC2/PlanetCCRMA.

   First the good news. On my PlanetCCRMA installation, and using a
custom 2.6.9 kernel that I built with significant help from Fernando,
Lee Revell and Ingo Molnar, I am getting absolutely phenominal
results. As a user I am running Jack using QJC with settings of 64/2,
alsaplayer using realtime access playing CDs through Jack, while also
running Mozilla doing GMail, gkrellm, and to top it off running
glxgears and getting 1700FPS, all while getting ZERO xruns. I am able
to change workspaces in fluxbox as well as drop down to the console
without causing a single xrun. (This was done under fluxbox. My
initial tests under KDE/Planet were not quite so good.) While this is
a leading edge and fairly untested kernel, the results for the future
of Linux audio kernels looks really bright.

   Now, unfortunately my results under Gentoo have not been so good.
To make the test as fair as possible I've copied the Planet
/usr/src/linux directory to my Gentoo /usr/src directory. I then saved
the .config file, did a make mrproper, and then replaced the .config
file back in /usr/src/linux. I did a cursory check of the config using
make menuconfig and then the kernel was built and installed using the
command

make bzImage modules modules_install

and then copyed the kernel to /boot and modified grub.conf. The kernel
boots, apparently cleanly, although a few strange things happen with
fonts in the boot console. I log in, do startx to get fluxbox up and
going, and at this point start setting up the same sort of
environment. It doesn't take long before problems show up. The
following is the message screen from qjackctl.

08:10:14.157 Statistics reset.
08:10:14.275 MIDI connection graph change.
08:10:43.246 JACK is starting...
08:10:43.247 /usr/bin/jackd -R -dalsa -dhw:0 -r44100 -p64 -n2
08:10:43.252 JACK was started with PID=14453 (0x3875).
cannot write to jackstart sync pipe 4 (Bad file descriptor)
jackd: wait for startup process exit failed
jackd 0.98.1
Copyright 2001-2003 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
loading driver ..
apparent rate = 44100
creating alsa driver ... hw:0|hw:0|64|2|44100|0|0|nomon|swmeter|-|32bit
control device hw:0
configuring for 44100Hz, period = 64 frames, buffer = 2 periods
08:10:45.345 Server configuration saved to "/root/.jackdrc".
08:10:45.346 Statistics reset.
08:10:45.356 Client activated.
08:10:45.357 Audio connection change.
08:10:45.359 Audio connection graph change.
08:10:57.023 Audio connection graph change.
08:10:57.216 Audio connection change.

(At this point Jack is up and running under Gentoo. Everything from
here on starts with I start alsaplayer)

delay of 29045.000 usecs exceeds estimated spare time of 1333.000; restart ...
08:11:03.764 XRUN callback (1).
delay of 14368.000 usecs exceeds estimated spare time of 1333.000; restart ...
08:11:04.040 XRUN callback (2).
delay of 14602.000 usecs exceeds estimated spare time of 1333.000; restart ...
08:14:13.147 XRUN callback (3).
delay of 14369.000 usecs exceeds estimated spare time of 1333.000; restart ...
08:16:38.493 XRUN callback (4).
delay of 13441.000 usecs exceeds estimated spare time of 1331.000; restart ...

(At this point I stop alsaplayer.)

08:20:17.335 XRUN callback (5).
**** alsa_pcm: xrun of at least 0.030 msecs
08:20:39.830 XRUN callback (6).
08:20:39.831 XRUN callback (7).
08:20:39.831 XRUN callback (8).
**** alsa_pcm: xrun of at least 0.034 msecs
**** alsa_pcm: xrun of at least 0.023 msecs
08:20:40.010 Audio connection graph change.
**** alsa_pcm: xrun of at least 0.023 msecs
08:21:46.441 XRUN callback (9).
08:21:46.442 XRUN callback (10).

Looking above there were 4 very large timing misses in Jack. Nothing
like this has occurred when I run the Planet version of the same
kernel. While the xruns at the end, when alsaplayer is turned off, are
bothersome, I'm not overly concerned about those. That said those do
not happen on my Planet version either.

There are f ew, apparently unrelated, messages in dmesg about USB problems.

I've tried a number of things like rebuilding Jack and rebuilding
alsaplayer. They have not helped. There appeared to be far more
warning messages about the kernel when I built it under Gentoo. I
presume my c compiler and glibc are newer under Gentoo. Here's the
info:

flash root # emerge info
Portage 2.0.50-r11 (default-x86-2004.0, gcc-3.3.4,
glibc-2.3.3.20040420-r1, 2.6.9-rc2-mm4-VP-S7)
=================================================================
System uname: 2.6.9-rc2-mm4-VP-S7 i686 Mobile Intel(R) Pentium(R) 4   
 CPU 3.06GHz
Gentoo Base System version 1.4.16
Autoconf: sys-devel/autoconf-2.59-r4
Automake: sys-devel/automake-1.8.5-r1
ACCEPT_KEYWORDS="x86"
AUTOCLEAN="yes"
CFLAGS="-O2 -march=pentium4 -pipe -fomit-frame-pointer"
CHOST="i686-pc-linux-gnu"
COMPILER=""
CONFIG_PROTECT="/etc /usr/X11R6/lib/X11/xkb /usr/kde/2/share/config
/usr/kde/3.2/share/config /usr/kde/3.3/env /usr/kde/3.3/share/config
/usr/kde/3.3/shutdown /usr/kde/3/share/config
/usr/lib/mozilla/defaults/pref /usr/share/config
/usr/share/texmf/dvipdfm/config/ /usr/share/texmf/dvips/config/
/usr/share/texmf/tex/generic/config/
/usr/share/texmf/tex/platex/config/ /usr/share/texmf/xdvi/
/var/qmail/control"
CONFIG_PROTECT_MASK="/etc/gconf /etc/terminfo /etc/env.d"
CXXFLAGS="-O2 -march=pentium4 -pipe -fomit-frame-pointer"
DISTDIR="/usr/portage/distfiles"
FEATURES="autoaddcvs ccache sandbox"
GENTOO_MIRRORS="http://mirror.tucdemonic.org/gentoo/
ftp://ftp.gtlib.cc.gatech.edu/pub/gentoo http://mirror.gentoo.gr.jp
http://www.zentek-international.com/mirrors/gentoo/"
MAKEOPTS="-j2"
PKGDIR="/usr/portage/packages"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
PORTDIR_OVERLAY="/usr/local/portage"
SYNC="rsync://rsync.gentoo.org/gentoo-portage"
USE="X aalib alsa apm audiofile avi berkdb bitmap-fonts caps cdr crypt
cups dvd dvdr encode esd fluidsynth foomaticdb gdbm gif gimp gimpprint
gphoto2 gpm gtk gtk2 guile imlib jack jack-tmpfs java jpeg ladcca
libg++ libwww mad mikmod mmx motif mozcalendar mozilla mpeg ncurses
nls oggvorbis opengl oss pam pdflib perl png ppds python qt quicktime
readline sdl slang spell sse ssl svga tcltk tcpd tetex truetype usb
video_cards_radeon x86 xml2 xmms xprint xv zlib"


   So, the question at hand is why should the same kernel, built under
two different distro's, but run on the same machine, produce different
results. It's likely either what the compiler flags were, or what the
libraries were, or what was running in the background. (So I think...)

   Any ideas on how I can get to the botom of this?

Thanks,
Mark



More information about the Linux-audio-user mailing list