Hi list,
We are seeing unexpected interruptions of SCHED_RR audio processing
threads, and are struggling to understand why they are happening. Does
anyone have any good tips or tools to suggest to help figure out what is
preempting or delaying realtime audio threads?
The issues are coming up with Receptor [see (*) below for an intro]
running its 2.6.24.3 CCRMA based kernel. The bug appears with Receptor
in its "dual core mode", with three instances of Native Instruments'
Kontakt 4 in DFD + multi-core mode. Either lots of held notes, or large
patches are needed to get the spikes.
With these settings there are 5 SCHED_RR threads processing audio (on a
two-core system). 2 are from Receptor, and 1 from each instance of
Kontakt. These Kontakt "helper threads" are released to do work as
possible while the audio thread is processing.
Kontakt/DFD is using mmap to bring its files into memory. This is done
in a lower priority "DFD thread", and the mapped memory is used by the
r/t audio threads.
DFD is important because the problems don't happen without it. And the
high SCHED_RR thread count is important, because the problems also don't
happen if we reduce the count.
When the spike happens there are no:
* wine bottlenecks
* system calls
* threads blocking on each other
* page faults during audio processing
There do appear to be "involuntary context switches" (as reported by
getrusage) when the spikes happen. This makes it seem like the scheduler
is interrupting our threads. But how do you figure out why that is
happening?
There aren't many threads in the system with higher priority. All of the
5 processing threads are SCHED_RR/76. The higher priority threads in the
system are:
* migration/0 - FIFO/99
* migration/1 - FIFO/99
* watchdog/0 - FIFO/99
* watchdog/1 - FIFO/99
* posix_cpu_timer (x2) - FIFO/99
* IRQ8 (rtc) - FIFO/99
* IRQ20 (our audio card) - FIFO 77
Could other kernel activity interrupt the audio threads? Are there
issues with memory mapping, that can block other unrelated threads? Are
there just too danged many SCHED_RR threads fighting for two cores?
Anyone have any suggestions for how to trace the scheduler, and thread
or process interruptions?
Apologies for the lengthy post, but this is a tricky subject.
Thanks for any tips or insights,
Michael Ost
Muse Research & Development
(*) Receptor (http://www.museresearch.com/products/receptor.php) is a
standalone hardware VST plugin player. It runs Windows VSTs using Linux
and Wine in a proprietary host program. We have patched Wine
(ftp://anonymous+museresearch.com@ftp.museresearch.com/rpms/1.8/wine-1.1.7-muse16.fc8.src.rpm)
to make it work better with VSTs in our environment.
LAC 2012: the Linux Audio Conference - Call for Participation
April 12-15, 2012 @ CCRMA, Stanford University
http://lac.linuxaudio.org/2012/
[Apologies for cross-postings] [Please distribute]
Online submission of papers, music, installations and workshops is now
open! On the website you will find up-to-date instructions, as well as
important information about deadlines, travel, lodging, and so on. Read
on for more details!
We invite submissions of papers addressing all areas of audio processing
based on Linux and open source software. Papers can focus on technical,
artistic or scientific issues and can target developers or users. We are
also looking for music that has been produced or composed entirely or
mostly using Linux and other Open Source music software.
The Deadline for all submissions is January 11th, 2012
The Linux Audio Conference (LAC) is an international conference that
brings together musicians, sound artists, software developers and
researchers, working with Linux as an open, stable, professional
platform for audio and media research and music production. LAC includes
paper sessions, workshops, and a diverse program of electronic music.
The upcoming 2012 conference will be hosted at CCRMA, Stanford
University, on April 12-15. The Center for Computer Research in Music
and Acoustics (CCRMA) at Stanford University is a multi-disciplinary
facility where composers and researchers work together using
computer-based technology both as an artistic medium and as a research
tool. CCRMA has been using and developing Linux as an audio platform
since 1997.
http://ccrma.stanford.edu
Stanford University is located in the heart of Silicon Valley, about one
hour south of San Francisco, California. This is the first time LAC will
take place in the United States.
http://www.stanford.edu
We look forward to seeing you at Stanford in April!
Sincerely,
The LAC 2012 Organizing Team
Hello.
I noticed mudita24 SVN was in a sad state, crashing the whole system.
There were already significant changes and improvements since release 1.0.3
So I fixed 'er up. Please give it a spin so we can put out a release sometime.
mudita24 is the updated replacement of envy24control, the gui for
ice1712-based audio hardware.
http://code.google.com/p/mudita24/
subversion: svn checkout http://mudita24.googlecode.com/svn/trunk/mudita24
mudita24-svn
1) Moved to cmake build system. No more autotools :)
(The default install location is /usr/local. It can be changed -
try the handy 'ccmake' gui).
2) Fixed wrong alsactl location. Now cmake looks for alsactl.
Override with environment variable ALSACTL_PROG.
3) Added usage info.
4) Fixed serious fatal X error: height too big. Was far too many markings,
brought down the system, due to lowest alsa db value now returning
-9999999. Installed some limits.
5) Executable is now called mudita24 instead of envy24control.
This should help kind packagers out there finally get this into the repos.
Cheers. Tim.
Here is a distro that does away with most of what (some old people in
Korea as well as) quite a few users on this list dislikes about "modern"
Linux desktop:
http://www.bandshed.net/index.html
I am using it now, it is current and works like a charm :) .. I really
think it deserves to be mentioned on the official LAD pages somewhere
/j
It seems Dennis Ritchie [1] passed away last week end.
He was the inventor of the C programming language and core developer of
UNIX.
I guess we are all relying in some way or another on this man's research
and inventions in our 'contemporary computer lives'.
Lorenzo.
[1] http://en.wikipedia.org/wiki/Dennis_Ritchie
Hello all!
My name is Simon, I am a long-time user of JACK on Debian-based Linux
systems. I prefer to compile JACK myself so I always set the
JACK-packages in Debian to "hold", remove everything from /usr and put
my build into /usr/local.
Starting with Debian 6.0 "squeeze" (Kernel is 2.6.38-1-686 #1 SMP), this
seems to cause problems somewhere. I checked out jackdmp from SVN
yesterday, build was ok. jackdmp starts up, QJackCtl is able to connect
and the connection graph shows up.
But any other client I want to use with JACK causes the following error:
[snip]
Cannot connect to server socket err = No such file or directory
Cannot connect to server socket
jack server is not running or cannot be started
[/snip]
My test client of choice is mplayer. (SVN r3418)
I checked whether the runtime linker uses the correct libs:
/usr/local/bin/mplayer
libjack.so.0 => /usr/local/lib/libjack.so.0 (0xb718a000)
This should be ok.
The list of file descriptors for the running jack server is
[snip]
jackd 13063 simon cwd DIR 8,6 36864 146594 /home/simon
jackd 13063 simon rtd DIR 8,6 4096 2 /
jackd 13063 simon txt REG 8,6 22899
223189 /usr/local/bin/jackd
jackd 13063 simon mem REG 8,6 145629
236929 /usr/local/lib/jack/jack_alsa.so
jackd 13063 simon mem REG 0,16 82493164
2070826 /dev/shm/jack-1000-0
jackd 13063 simon mem REG 8,6 1153328
391304 /usr/lib/libasound.so.2.0.0
jackd 13063 simon DEL REG 0,16
2995543 /dev/shm/jack-1000-2
jackd 13063 simon DEL REG 0,16
2995541 /dev/shm/sem.hTRyxy
jackd 13063 simon DEL REG 0,16
2070960 /dev/shm/sem.2Jamky
jackd 13063 simon mem CHR 116,5
241895 /dev/snd/pcmC0D0p
jackd 13063 simon mem CHR 116,6
241896 /dev/snd/pcmC0D0c
jackd 13063 simon mem REG 8,6 1323460
246009 /lib/i686/cmov/libc-2.11.2.so
jackd 13063 simon mem REG 8,6 116600
228035 /lib/libgcc_s.so.1
jackd 13063 simon mem REG 8,6 149392
245993 /lib/i686/cmov/libm-2.11.2.so
jackd 13063 simon mem REG 8,6 30684
245999 /lib/i686/cmov/librt-2.11.2.so
jackd 13063 simon mem REG 8,6 9736
246001 /lib/i686/cmov/libdl-2.11.2.so
jackd 13063 simon mem REG 8,6 117367
245998 /lib/i686/cmov/libpthread-2.11.2.so
jackd 13063 simon mem REG 8,6 958479
223178 /usr/local/lib/libjackserver.so.0.1.0
jackd 13063 simon mem REG 8,6 975012
214075 /usr/lib/libstdc++.so.6.0.13
jackd 13063 simon DEL REG 0,16
2070886 /dev/shm/sem.5FWprn
jackd 13063 simon mem REG 0,16 1012
2070831 /dev/shm/jack-1000-1
jackd 13063 simon mem REG 0,16 70712
1906270 /dev/shm/jack-shm-registry
jackd 13063 simon mem REG 8,6 113964
228057 /lib/ld-2.11.2.so
jackd 13063 simon 0r FIFO 0,8 0t0 2070809 pipe
jackd 13063 simon 1w FIFO 0,8 0t0 1906224 pipe
jackd 13063 simon 2w FIFO 0,8 0t0 1906224 pipe
jackd 13063 simon 3u CHR 116,7 0t0
241899 /dev/snd/controlC0
jackd 13063 simon 4u unix 0xece16900 0t0
2070957 /dev/shm/jack_(default)_1000_0
jackd 13063 simon 5u CHR 116,5 0t0
241895 /dev/snd/pcmC0D0p
jackd 13063 simon 6u CHR 116,6 0t0
241896 /dev/snd/pcmC0D0c
jackd 13063 simon 7u unix 0xece166c0 0t0 2070959 socket
jackd 13063 simon 8u CHR 116,1 0t0 2555 /dev/snd/seq
jackd 13063 simon 9u unix 0xece16000 0t0
2070962 /dev/shm/jack_(default)_1000_0
jackd 13063 simon 10u unix 0xf4c71200 0t0
2995537 /dev/shm/jack_(default)_1000_0
jackd 13063 simon 11r FIFO 0,8 0t0 1906200 pipe
jackd 13063 simon 12w FIFO 0,8 0t0 1906200 pipe
jackd 13063 simon 13u unix 0xf4f81440 0t0 2995542 socket
jackd 13063 simon 17r FIFO 0,8 0t0 1906224 pipe
jackd 13063 simon 18w FIFO 0,8 0t0 1906224 pipe
[/snip]
So the server apparently has sockets open -- question is why are
clients except QJackCtl unable to connect to them?
I am out of ideas. I basically recompiled everything from source a few
times (including alsa-lib, libsndfile, jack, mplayer) and nothing
changed.
I appreciate any help on this problem. Thank you very much in advance!
Simon
--
guitarix/gx_head, a guitar mono tube amplifier simulation for jack,
a new release (0.19.0) is available.
please refer to our project page for more information:
http://guitarix.sourceforge.net/
new features in short:
* make convolver a rack module
* add favourite list menu to the convolver
* add zita-rev1 module (from faust distribution)
* add stereo verb module
* add some cabinet`s
* fix bug in Ladspa plugins
* add factory settigs by JP
* made logger window resizeable
* tuned switching of configurations without loud bang
* plugged some memory leaks in rack order code (GList's not freed)
* bug fix: GxScrollBox passed an uninitialized group to RadioButtons
* introduce a plug-in based engine
* a couple of invisible internal source changes and a couple of new development
tools added
* switch to use faust version 0.9.43
* other small / big clean-ups
download site:
http://sourceforge.net/projects/guitarix/
please report bugs and suggestions in our forum:
http://sourceforge.net/apps/phpbb/guitarix/
there you could found also a couple of examples produced by guitarix users:
http://sourceforge.net/apps/phpbb/guitarix/viewtopic.php?f=11&t=83
have fun
_________________________________________________________________________
For extra Impulse Responses, guitarix uses the
zita-convolver library, and,
for resampling we use zita-resampler,
both written by Fons Adriaensen.
http://kokkinizita.linuxaudio.org/linuxaudio/index.html
We use the marvellous faust compiler to build the amp and effects and will say
thanks to
: Julius Smith
http://ccrma.stanford.edu/realsimple/faust/
: Albert Graef
http://q-lang.sourceforge.net/examples.html#Faust
: Yann Orlary
http://faust.grame.fr/
________________________________________________________________________
guitarix development team