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

Re: FC4/x86_64 and ALSA: [long] noise and distortion



Nathaniel Reindl <fiction@sdf.lonestar.org> wrote:
> Read: 125MBytes/s practical

I have never broken half that in actual usage with just one
bursting device.  Address, control and other details are mux'd on
some pins, and there are the setup and tear-down times on
transfers.

Contention is then the biggest killer as devices don't even get a
1MBps burst before something else takes control.
Everything from the slowest character devices to any on-board I/O
and other components are on the legacy PCI bus.

You can literally get far less than 10MBps out of a legacy PCI
bus if you're using programmed I/O for various device transfers,
depending on how much you're trying to push through.

> I'm not even pushing the practical limit with 44.1kHz stereo,
> but it still sounds like hell, and the PCI bus is very, very,
> very far from being saturated.  I'd give it another
100MBytes/s.

Just because it is capable of the bandwidth doesn't mean there's
not a device holding up the bus not using it optimally.  PCI is a
peripheral interconnect, _not_ a system interconnect (like
HyperTransport) where you burst data through at its optimal rate.
 Audio cards and many "character" devices are a major issue.

> ... this is with the 3D features turned OFF, BTW.  2-channel
> stereo.

Again, depends on how many voices.

> Not that I was sending anything to the other channels anyway. 
> (But, mayhaps the driver just sends silence and eats bandwidth
> no matter what?)

Anything that takes ahold of the PCI bus does exactly that.
That's what I meant by contention.

As I said, I have my NIC and my ATA on their _own_ interconnects
in the nForce4 (direct HyperTransport for the NIC, PCIe x1
channel for the ATA) and my ALC850 can saturate the PCI bus
anytime I enable a few features or turn up the number of voices.

And that is under _Windows_XP_!

> I don't care about synthesis.  Synthesis can easily be done
> with timidity++, so I'm not so concerned.  Yes, timidity eats
> up a ton of CPU, but I'm on a 1.4GHz Opteron, so that shouldn't
> be a big deal.

You _continue_ to miss the point!

The problem isn't the CPU load, it's the amount of data that
thrashes between the I/O and main memory over the measly PCI bus!
I/O that eats less than 5% of a CPU can _saturate_ a legacy PCI
bus.

> I'll live with that.  I'm talking straight-up 44.1kHz
> stereo audio playback plus some decoding.  In other words, 
> MP3s.

Which come back uncompressed from the CPU to memory down the PCI
bus to the card.  Depending on what format the MP3s are being
decoded into, you can eat up a lot of PCI time.

Which is why I said check the settings of the card at the _OS_
level, as well as in the program itself.  The compressed MP3
stream might only be 44.1KHz, 2-channel _before_ it is decoded,
but afterwards it might be decoded into a much higher rate for
your audio card.

What else is on your PCI bus (including on-mainboard
peripherals)?

> I did that test.  And I gronked my disk.  And I bombed the hell
> out of the few hosts on the network.  Individually at first and
> after that, at the same time.
> During audio playback, I noticed no change at all.

Okay then.  That's not the most ideal test, but it's still a
test.
It doesn't really give you much either way, although I guess I'd
have to hear the distortion to know.

> Save the rest of the engineering ``why''.  If there's a way to
> get the distortion to go away aside from staying up until the
> start of the semester, hacking up ALSA, and learning the 
> intimate details of how the Linux sound subsystem works, I
> want to know about it.  HOW, not WHY.

I have recommended you find the options for ALSA and verify
you are not putting the card into a mode that requires 2, 3 or
even 6+ times more bandwidth in the stream that comes from the
CPU.

I'm _not_ telling you to hack the kernel.  I'd do the same if
someone had the problem -- like I do -- where my ALC850 installer
under _Windows_XP_ enabled 3D audio by default and I was getting
choppy audio.

With a 2-channel, 32-voice program no less!

> Step-by-step would be totally groovy.  Bonus points for saving
> my wrists.  The CLI is for pinheads who haven't seen the joys
of
> painful RSI.

Hit the ALSA docs.  Otherwise I'll be typing a 50-step procedure
that might not even be applicable for your card.

The options are pretty module-specific.

> As an aside, please do quit being an ALSA apologist.

I'm not.  I said that the rather "generic" ALSA drivers are
_not_ going to be as "ideal" as the vendor's drivers.
I've seen this first-hand.

So far, the best features v. drivers support I've seen under
Linux is the Creative SB Audigy2 series.  I can jack up full
5.1 decoding on that sucker with UT2004 and it's no issue at
all.

> Admit that it's the software's fault and just walk away.

Okay, instead of blaming the audio driver configuration of my
ALC850 that is in 3D spatial, 2-channel mode, I'll blame
Windows XP.  That's _exactly_ what I'm talking about.

> One stream being written to /dev/dsp (and only one!) should
> not cause saturation like that.  It just shouldn't. 

It does, under Windows XP too.

> If this escalates into a flamewar, I'll be the first one to
> leave.

???

Honestly, if you can't have a technical discussion without being
offended, please _do_ leave!


-- 
Bryan J. Smith                 mailto:b.j.smith@ieee.org
Sent from Yahoo Mail (please excuse any missing headers)

-
To unsubscribe, send email to majordomo@silug.org with
"unsubscribe silug-discuss" in the body.