On Mon, 28 Jul 2014 01:07:52 +0100
James Stone <jamesmstone(a)gmail.com> wrote:
I've just been playing around with this, and can
confirm that a
hand-built -rt kernel has lower max sched latencies than a generic
lowlatency kernel in ubuntu on my system (<100us compared to 1500+).
However, I noticed a really weird thing - that when running the test
using sudo cyclictest -m -n -Sp99 -i100 -d0, the reported DSP load on
qjackctl is reduced (by around 50%), and there are fewer xruns at low
latencies. As soon as I stop cyclictest, the xruns (at a rather low
jack frames/period of 32) come back.. Any idea why this should be???
I think this is due to running cyclictest as root, as it then
opens /dev/cpu_dma_latency and writes 0 into it. This has the
effect of disabling cpu powersaving. The cpu will no longer use P or C
states and runs full out. The result is that it finishes processing
the audio threads faster, thus lowering the DSP load shown in qjackctl
(which is a measure of how much of the available time until the
deadline did the audio processing take). The documentation is in
Documentation/power/pm_qos_interface.txt Note that it's not enough
to just write a value to it, the file needs to be kept open too, once
it's closed the cpu goes back to it's normal powersaving.
On my i7 desktop I take another approach. I echo 100 to
/sys/devices/system/cpu/intel_pstate/min_perf_pct which makes it run
full out, but still go into C1 powersaving. This keeps the
temperature down. If you have a recent Intel cpu, you can observe the
change with the i7z utility. I don't know how this works on AMD cpus
though.
--
Joakim