While locking a RT process to a CPU to achieve even lower latencies
might be useful to some
the general userbase wants good latencies on simple UP, non HT-enabled
hardware too.
(AMD is gaining marketshare and we cannot simply expect that good
multimedia performance (aka low latency)
can be achieved only on those SMP/HT boxes where the truth is that
except in the case of really crappy hardware,
those common UP machines are actually capable to delives latencies in
the range of dozen of usecs.
(taking the RTLinux benchmarks as reference).
Of course Linux != RTLinux and we never expect nor pretend Linux to
match the response time of RTLinux but
as said earlier latencies at around 1msec should are doable on decent UP
boxes and this is more than
adequate to run demanding real time audio applications like software
synthesizers, samples, real time effects etc.
The only hope is that the hard work from Ingo, Andrew and all the others
gets soon integrated in the mainstream
2.6 kernel so all Linux users can take run demanding multimedia
applications out of the box without going through
the painful patching,kernel recompiling etc.
Or is this still not realistic at this point ?
(see the old issue with kernel 2.4, low latency patches were too
unclean to make it into the
ufficial kernel tree).
Plus what's very important is that every kernel developer and driver
developer (even thirdparty, especially those
that do closed source stuff like Nvidia etc) takes into account the
latency problems that code paths that run for
too long time (or disable IRQs for too long etc) might create.
While I'm not a kernel expert I assume the premptible kernel alleviates
this problem but I guess it still cannot
completely get rid of low latency-unfriendly routines and drivers.
Perhaps in upcoming Linux kernel/driver programming books this issue
should be stressed out and
mentioned prominently in order to avoid the eternal:
fixing latencies in kernel x.y.z -> new kernel versions with new
drivers/changes/enhancements comes out
-> latencies are bad again -> fix latencies in this new kernel version
..... ( iterate at infinitum)
cheers,
Benno
http://www.linuxsampler.org
Lee Revell wrote:
On Tue, 2004-07-20 at 14:11, Ralf Beck wrote:
it's
an issue for all block IO drivers that do IO completions from IRQ
context and that can do DMA - i.e. every block IO hardware that uses
interrupts. This includes SCSI too. In fact for SCSI it's a norm to have
I renew a question i asked earlier.
To my understanding, on a SMP or hyperthreading system, disabling of
IRQs is always local to one (virtual on HT) cpu.
So would it be possible to get ultralow latency by simply hardlock all irqs
and processes to cpu1 and the irq triggering the audiothread (together with
the audiothread) to cpu 2 using the sched_affinity and irq-affinity
capabilites of the kernel?
This would be an easy to use lowlatency hardware patch for linux audio users
with SMP/HT systems. Anybody knows?
I'm currently thinking about getting a new system and consider a dualsystem if
this worked.
Should work. For example, the RTLinux people report excellent results
on SMP systems by binding all RT threads to one CPU and having the Linux
part of the system run on the other. This is just a "softer" version of
that setup. Even if there are cases where IRQs are disabled globally,
it would be an improvement. I suspect you are not getting much of a
response because no one has actually tested it with an audio system.
Lee