Hi Daniel,
On 02/14/2011 12:29 PM, Daniel Poelzleithner wrote:
Hi,
I'm the developer of ulatencyd[1], a dynamic system optimizer for the
linux kernel.
I want to write a configuration that suits hifi audio usage better then
the default configuration. The default optimizes for normal workloads,
restrains amok running processes, gives priority to the active running
program, the window manager and desktop ui.
One problem I was facing is realtime tasks. Currently only two programs
are allowed to get rt priority, thats jackd and pulseaudio. I don't know
of any other that a normal user may use.
The default configuration looks like this:
https://github.com/poelzi/ulatencyd/blob/master/rules/scheduler_desktop.lua
jackd and pulseaudio go into users bg_high group which has 1/3 of the
users cpu share time and max 45% cpu realtime, which should be enough
for normal workload.
I don't think this is acceptable for professional audio. I suggest 1/1
of user's CPU share and max 99% CPU realtime. more: see below.
Normal processes, that are not caught specially are
grouped into groups,
using the pgrp process value. ( to workaround bad ui behaviour like kde
& gnome this value can be overridden by rules. Usually all programs
started get a group and all children of them end in the same group.)
I guess you guys need something different.
• do you a lot of rt tasks besides pulseaudio and jackd ?
All the audio-interface related IRQ tasks (on PREEMPT RT - e.g.
sirq-hrtimer, sirq-timer and irq/18-uhci_hcd, irq/17-ohci1394,
irq/28-hda_inte,.. etc - but they're inside the kernel and may not need
special attention from ulatencyd)
All processes/threads that inherit the RT privileges from JACK.
There may be a few ALSA-midi clients (no JACK) that try to acquire RT
scheduling but I can't think of any just now. Oh, and cdrdao (mastering
audio to CD) likes to have RT privileges.
AFAICT, the majority use professional LA users is not using pulseaudio
at all.
• do they need a lot of cpu time ? is 45% not enough
for jackd/pulseaudio ?
What is the reason behind 45% ? Wouldn't 99% make more sense? just use
the bare minimum to prevent the system from locking up. Am I missing
something there?
Why would I buy a fast multi-core CPU to have 55% of it just idling on
stage, during a performance or in a studio? Some headroom is fine, but
why restrict the box?
FWIW: I sometimes bump into 50-90 %CPU load (actually ~160% on a dual
core or ~300% on quad core) by running jammin, multiple jconvolvers or
occasional foo-yc20.
• would it be better to just put everything into one
cgroup instead of
many smaller groups ? maybe just make exceptions for ui apps and the
rest into one group ?
In order to come to a conclusion of "what is better". Could you please
outline advantages/disadvantages of each approach?
There are other neat things that could be done:
• move all away from one processor and move jackd for example on it,
giving him lowest latency possible. ok, not perfect as the kernel may
still use this cpu. But interrupts can also be masked on the core.
That would void the parallel execution of jack2 and tschack graphs,
wouldn't it? The main JACK-process is not CPU heavy: it's the JACK
client's threads that cause the CPU load.
• maybe changing /proc/sys/kernel/sched_latency_ns
will help
As you can see, there is a lot that can be done. As I'm not doing audio,
I really would like to get some requirements from users first, or even
better. Someone with insights is writing the configuration/rules. I will
be glad to assist :-)
kind regards
daniel
[1]
https://github.com/poelzi/ulatencyd
many thanks for bringing this up!
Cheers!
robin
_______________________________________________
Linux-audio-user mailing list
Linux-audio-user(a)lists.linuxaudio.org
http://lists.linuxaudio.org/listinfo/linux-audio-user