I’m setting up a laptop as a digital audio workstation.
While the audio apps are running, I want to disable any cpu frequency scaling or power management, etc, so that the system just operates at full capacity.
I know about powersave, and I can run powersave -f to force full cpu frequency. I will run that as part of my Jack start-up.
Is there anything else I can do regarding power management, to ensure maximum system performance?
I’m running xfce in this installation, so I assume any tools would need to be cli.
Thanks for any suggestions.
> Is there anything else I can do regarding power management, to ensure
> maximum system performance?
within the narrow confines of power management, once you have turned
it off (and require full chip speed all the time) there is not much
else you can do to increase performance through power management alone…
actually, i don’t think you are increasing performance at all by
turning off power management, instead what you are doing is saving
those microscopic delays required for the chip to jump from an idle Hz
to a max Hz…
and, no matter how “slow” the chip is at detecting the need and
kicking up its clock (as far as i know) it will be VERY difficult to
pile up those microseconds enough so you have to work overtime to get
the same job done–at less power consumption, carbon released, etc…
that chip is FAST at seeing new need for speed…
I think you are right and it is probably a case of diminishing returns against increased energy cost.
I suspect that when the system is busy streaming audio i/o with some dsp, the clocks are going to be working at capacity.
The rest of the system is optimized with RT kernel, RT privileges for the user, and some interrupt tweakage. However, since the power management is available through user space, I can easily wrap it in a start-up script that runs when Jack starts, and restores more conservative settings when Jack finishes. So it will be trivial to experiment.
Paul, but are you sure you need the full capacity to run your audio stuff?..
Personally I’m often forcing my laptop tp use the lowest possible CPU frequency, and even on the old Toshiba there was no issue to listen music or watch DVD/divx running CPU on 600Mhz :-))
As well, why a simply “dynamic” setting will be not good for you? - it’ll increase your CPU frequency if there will be a real requirement…
Or do I miss something here?
What I will be doing involves real-time multi track recording and playback. The the aim is to minimize latency (ie delay between music in and music out) and to not experience xruns (that is, buffer overrun or underrun.) Any dropped data means audible glitches.
Now, while the CPU should just match system demand, some users have experienced xruns which were reportedly resolved by just disabling the power management.
having glossed over your first post’s first line “digital audio
workstation” with little understanding of your situation…i now
retract all of my musings on why you are wasting your time by
disabling power management…and, instead offer:
i downloaded the kernel source for my kernel, and found (by accident)
that this address in a browser yielded a long list of parameters
available for MY kernel:
i don’t know if you have that document but, if you do i think you will
find ways to control/influence the following (and other maybe useful)
critters at the kernel level:
ACPI Advanced Configuration and Power Interface
APIC Advanced Programmable Interrupt Controller
APM Advanced Power Management
ALSA Advanced Linux Sound Architecture
now, i don’t know the best way to “minimize latency” via kernel
parameters…but i bet SOMEONE does, and i bet some-musical-one has
already faced and solved your ‘problem’…
i love google–see if these 300+ hits will help you find those who
have traveled this path before you: http://tinyurl.com/ybhdhj5
and, don’t forget that what works for the kernel in Debian, Red Hat
etc will probably/maybe work with your kernel…
note: i am NOT saying go away! instead when you become “THE openSUSE
digital audio workstation guru” i ask you hang around…who knows you
might pick up a gig with the next big thing . . . that old man Mick
is always looking for new stuff…
ok, I see now. Yes, if you need a lowest latency you have to run your CPU on the highest frequency.
The easiest way to do it probably will be just to make a start script for you application including execution of “powersave -f” to run CPU on its full speed, and before an exit just execute “powersave -A” to return to the dynamic mode. You don’t need root permissions and it’s independent to your window manager. Or you may simply unload any “cpufreq*” modules (or boot with acpi=off) - but it’ll bring your laptop back to 10 years away
As well by recompiling the application code with the latest compiler and right optimization options oriented to your CPU chip may help a lot too if you’re tunning after few nanoseconds to gain
Thanks Palladium. I should have provided a little more detail straight up.
That kernel config text is a gem of a find!
I’ve been reading fairly widely about optimizing a linux system for this specific task.
Having lots of CPU grunt is obviously useful, but that alone does not ensure the lowest possible latencies. This is why the realtime-patched linux kernel is recommended because of the improved I/O scheduling that it provides.
I have installed Jan Engelhardt’s openSUSE realtime kernel (check here for information and repositories: RT Kernel Instructions - openSUSE). I believe that 2.6.33-rt is available, or will be very soon.
The FFADO (free firewire audio drivers) site ffado.org | Free Firewire Audio Drivers links to and provides lots of practical information about other important tweaks such as elevating privileges for the interrupt threads servicing key audio components eg system timer, firewire and usb.
The realtime kernel and the irq realtime tweakage are, so far as I can determine, the key elements in building a reliable DAW on linux.
Further tweaking may help: disabling non-essential background service daemons, running a lighter desktop environment, taking down the network, etc. Every cpu cycle spared and interrupt not needing a service means a few extra resources for DSP, I guess.
Yes, there are purpose-built audio-centric distros out there. I’m just most comfortable with Suse - it’s been on my desktop since 9.0.
consider devoting some of your free time to ‘capturing’ the how of
doing your thing on an openSUSE laptop…maybe in a how-to or wiki
page…[hmmmmm, i didn’t look, maybe it is already there, but two
years old and sorely needing an update!]
especially those parts that are openSUSE specific and/or learned by
@palladium: I’m keeping a log of what I’ve needed to configure, mainly so I don’t have to remember next time I need to set up So an openSUSE how-to would be doable - just to cover the essential system configuration.
@dim7: QJackctl, the gui front-end for JACK, provides for running commands when JACK starts and ends. This seems the obvious place to run the powersave commands.
hey, look what i ran into by accident today:
Hyper Low-Latency Audio with a Real-Time Kernel
under 3ms latency!