NetBSD-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Reduce CPU usage of PulseAudio on NetBSD

On Wed, 23 Dec 2015, Kamil Rytarowski wrote:
The simplest way to reduce >90% CPU usage to <1% on a NetBSD host is the following set of two commands (assuming running daemon):

I have another method.

mv /usr/pkg/bin/pulseaudio /usr/pkg/bin/disabled.turd.pulseaudio

(I don't pkg_delete it due to dependency BS that I wish wasn't there)

Pulse audio is un-friendly toward all unix-like platforms (including and especially Linux). I have had every problem in the book with Pulse audio on _Linux_. I haven't the disrespect to defile my NetBSD system with it (perish the thought!). I personally consider it hostile software and counterproductive to even engage with it. It's not limited to taking up 90+ % of the CPU. It also:

* Has buffering issues which cause sound to stutter, jitter, and basically
  sound like crap. Today. Now. On at least two Linux systems I'm forced to
  use. One is Ubuntu and the other is Fedora and they are patched to the
  hilt. It often takes more CPU than the games I play under Linux do!

* Doesn't actually support some of the sampling rates it advertises to
  clients. Ie.. insufficient checking on it's operational parameters. Then
  it won't resample, or if it does, does so in non-realtime (ie.. poorly).

* Almost never works with the hardware mixer on the systems I use. Ie..
  changing volume either creates noise, doesn't work, or mutes the whole
  channel and makes it un-adjustable.

* Skips and jitters in bully-victim scenarios with other system daemons as
  they try to do (often very little) tasks on the system.

* Mis-identifies mixer controls (ie.. headphone port is wrong or missing,
  line out is mismatched etc..)

* Bugs out or overreacts to sound events like removing a headphone from
  the headphone jack.

* SIGSEGV then takes some client apps with it (Chrome, Skype, etc..).

* Often skips or jitters the audio while adjusting volume

* Breaks or jitters input streams when adjusting line-in or mic volume.

* Often has a freak out when one client plays at one rate then another
  client uses a faster rate. The first (slower) client then goes at the
  higher rate and you get Alvin and the Chipmunks.

* Tends to "ruin" other configurations. Ie.. it creates dependencies in
  Ubuntu that (especially recently) make it impossible to uninstall and
  replace with alternatives without custom compiling packages. For
  example, you can't get esound anymore since they force a replacement
  pulseaudio-esound compatibility crapware (that's shares all of
  Pulseaudio's issues plus adds a few of it's own). You'll have big
  problems just going back to ALSA or OSS. Especially with their version
  of mplayer (where they've married it to pulseaudio too closely).

* Pulseaudio is way too over-complicated. It's some dream of Lennarts while
  he was high at a rave or something. Maybe he fancies himself some kind
  of sound engineer. *YAWN* *SHRUG*. Here's me ... wholly unimpressed.
  Every single other solution in the same or similar space is MUCH better.
  I'm thinking Jack, Arts, Esound, etc.. They may not have all the silly
  features, but they WORK, generally. I've had pulseaudio on at least 7
  machines. It worked acceptably on ONE. Hand waving about "it's better
  now" was old 3 years ago. It's not better, just more bloated.

* I have (way) more complaints and buggy, anger inducing experiences with
  Pulseaudio, but I guess I'll end here. I consider it one of the biggest
  PoS parts of Linux overall. It's like the Kyoto Climate accords. It
  sucks the air out of the room and provides a very sub-par "solution"
  (that isn't) that occupies the space where something much better should
  be. I doubt anyone is still reading this, so I'll leave my further
  issues as an exercise for those who still choose to drink the
  Lennartix^H^H^H Uhh, I mean Linux kool-aid. I'm an enemy of Lennart's
  way of doing things and I'm not the least bit ashamed to say so
  (long and loud).

We ought to do everything we can to avoid having it taint NetBSD in any way. Remove it, deprecate it, and stub it out. Just because the Linux crowd thinks something is wonderful doesn't mean it is. The unwashed masses are usually dead wrong.


pacmd "unload-module module-oss"
pacmd "load-module module-oss mmap=0 device=/dev/audio"

In general there is an assumption of Linux-like feature to efficiently
poll(2) mmap'ed region. This operation is very slow on NetBSD.

This is a temporary walk-around, I will be looking for a permanent one.

Credit: mlelstv and medfly from #netbsd @ FreeNode.
Version: GnuPG v2


Home | Main Index | Thread Index | Old Index