Improving Linux sound latency
    Updated: 2005-08-21
Created: 2004-07-28
    This document is an incomplete draft.
    Various scheduling and sound low latency tweaks might be very
      useful to avoid sound breaking up, some pointers:
    
      - Using a real time priority
- It may be very helpful to run the sound processing
	applications like ohphone,openmcuorGnomeMeetingat a real time priority. To avoid
	running them asroot, start them as a normal user,
	then change their priority class to FIFO asrootusingchrt,
	for example like this:for p in $(pidof ohphone); do chrt -v -r -p 5 $p; done or when starting the application, for example withchrt -v -r -p 5 xmms 
- Kernel latency improving patch collections for
	kernel 2.4.x
	and
	kernel 2.6.x
- These two sites contain a set of low latency and
	preemption patches, ready made and packaged for common
	kernels.
	
 My impression is that preemption patches should
	be only applied by the brave, as they can cause problems
	with several drivers.
 Also, there is
	some evidence
	that in recent 2.6 series kernels, like 2.6.12, latency is
	pretty low already and the preemption logic does not help.
- BIOS: ensure sound cards on interrups 9, 10 or 11
- These interrupt levels have the highest priority in case of
	  nearly simultaneous interrup events.
- X11: enable PCI_burst, disablePCI_retry
- This helps ensure the graphics card does not use too many
	PCI bus cycles, stalling the sound card.
- System: tweaking the
	PCI latency timers
- PCI devices share the bus, and the “latency timer”
	for each device determines for how many consecutive cycles the
	device can use the bus. Devices with a high value for the
	latency timer can and do cause gaps in sound. Often enough it is
	video cards that have high default latency timer values, to look
	better in benchmarks. It is possible to reset the default value
	of the latency timer with the command:
setpci -v -s '*:*' latency_timer=20
setpci -v -s '0:0' latency_timer=0 which sets it to 32 cycles and resets the latency timer to 0 for
	the host bridge, usually with id00:00.0(to
	prevent bad performance for DMA). It is possible and perhaps
	useful to give a larger value to a sound device, for example
	with one of:setpci -v -d '1102:0002' latency_timer=80
setpci -v -s '00:09.0' latency_timer=80 where 1102:0002 is the manufacturer and model id of
	your sound card, or 00:09.0 is the PCI bus id of the
	same card. It will be different on your system, so uselspciand/orlspci -nto discover
	them.
 Usually it is better to use the manufacturer and model id
	instead of the bus id, as moving the card from one slot to
	another is more common than replacing the a sound card with
	another in the same slot.
 Note that sometimes setting too low a value for the latency
	of the video card might make video card operations less visually
	smooth; setting the latency timer of the host bridge to greater
	than zero can significantly impact the transfer rate of DMA.
 There is more information on this issue in this
	general introduction to PCI latency,
	or this
	PCI latency HOWTO,
	and this
	Linux specific PCI latency article.
- 
	Audio Quality HOWTO
      
- In parts it is a bit dated, but the sections on
	dropouts
	and
	latency
	contain a number of very interesting points.
- 
	Low latency with ALSA mini HOWTO
      
- From the page:
	This document is specifically aimed at those
	  interested in using 2.4.x with Andrew Morton's low-latency
	  patch for audio purposes.
	  
 It's not really hard when you know what to do, but
	  there's a lot of stuff to upgrade before you can compile
	  and install the kernel if you are moving from linux
	  2.2.x. So if you are, don't forget to read the section
	  on updating your system files.
 We suggest scanning through this whole document to
	  get an overview before you start mucking with the
	  kernel. Everything described here requires kernel
	  configuration, and it's easier to do it all in one go
	  rather than rebuilding the kernel again for each feature
	  you want. You should also read through the necessary
	  upgrades to make sure you have all your software in
	  order before you start configuring.  Once you have
	  things working you may want to run some benchmarks on
	  your system. Visit the LAD site for the latest info,
	  apps and test results.
 
- 
	Low latency for audio work on linux 2.6.x 
- Information on latency issues and advice specific to the 2.6.x
	kernel series, by Florian Schmidt.
- Daniel Robbins talk about IRQs and PCI latency
- Informative, even if slightly old (2001). But I rather
	disagree with his conclusion to set very long PCI latencies to
	optimize thruput. I think shortish burst while slightly less
	efficient are more in tune with the relative slowness of the PCI
	bus.
- 
	hdrbench,latency-graphLinux latency resources
- Latency checking tools and info.
- Ardour hardware advice
- Interesting advice. Except for the blanket warning about all
	VIA chipsets; many older motherboards with VIA chipsets do have
	limitations and performance issues with DMA and PCI transactions,
	but not all, and in particular recent (2004 and later) chipsets
	seem to be rather OK.
- Ardour mailing list thread on latency
- This thread contains several interesting contributions,
	especially as to IRQ priorities (highest to lowest: 0, 1, 8, 9,
	10, 11, 12, 13, 14, 15, 3, 4, 5, 6, 7). I used to think that
	these do not matter that much, but then I always had my sound
	card on IRQs 9, 10 or 11, which are high priority ones. I also
	agree with the warning about APIC interrupt routing.
- 
	posting on low latency,
	advice on low latency
      
- Benno Sennoner's advice on low latency audio, a bit old
	but still useful.
- 
	PlanetCCRMA
      
- From the page:
	Planet CCRMA (CCRMA is pronounced ``karma'') at
	  Home is a collection of rpms (RPM stands for RedHat Package
	  Manager) that you can add to a computer running RedHat 7.3,
	  8.0, 9 or Fedora Core 1 to transform it into an audio
	  workstation with a low-latency kernel, current ALSA audio
	  drivers and a nice set of music, midi, audio and video
	  applications." 
- The CCRMA project's advice on hardware tuning and latency
- Wise words from Planet CCRMA on realtime, and latency.
    
      