From: _earthshine_

2008-12-07 02:49 pm (UTC)





First off, there's not a lot of SNR there, at least not



doesn't show anything amazing. Given the noise on the channel, i'm fearful that the peaks we see might be anomalies and not much of substance. Just in case, tho, i



NOTE: I'm a loser and did NOT plot vs. frequency here. The peak zoomed in on there corresponds to about 5.787kHz.



This is just a quick first look. If you really wanted to know, the better way to do this is to use a sliding window FFT (Gabor transform) -- it's sort of a poor man's spectrum analyzer. That would generate a full 2D map of the spectrum vs. time. Then we could look for a peak that appears and disappears 3 times, and that'd be our culprit.



I saved the data, so maybe i'll give it a whirl later, but right now i gotta run.



Edited at 2008-12-07 02:50 pm (UTC) Well, i've got a partial answer for you. I grabbed the stronger of the two stereo channels (for whatever reason, they were not the same -- did you record in stereo?) and snipped out the second bzzt series.First off, there's not a lot of SNR there, at least not as far as i can see . Of course we can hear it, tho, so that's a good sign. An FFT of the snippet doesn't show anything amazing. Given the noise on the channel, i'm fearful that the peaks we see might be anomalies and not much of substance. Just in case, tho, i zoomed in on that one peak that was all by it's lonesome in the upper mids, given that sonically that could be what we're looking for.NOTE: I'm a loser and did NOT plot vs. frequency here. The peak zoomed in on there corresponds to about 5.787kHz.This is just a quick first look. If you really wanted to know, the better way to do this is to use a sliding window FFT (Gabor transform) -- it's sort of a poor man's spectrum analyzer. That would generate a full 2D map of the spectrum vs. time. Then we could look for a peak that appears and disappears 3 times, and that'd be our culprit.I saved the data, so maybe i'll give it a whirl later, but right now i gotta run.

From: technolope

2008-12-07 04:18 pm (UTC)





The subroutine that makes the noise is a Poisson solver (an FFT-based solver, coincidentally), and my resolution is 128^3. Three calls lasts 1.5 seconds, and there is a small gap between the bzzts, so each one is 0.3 to 0.4 sec long. I suspect that the solver is an iterative one, but I don't know how many iterations. If the freq is 5.787 kHz, then it wold cycle about 2000 times during that interval, and the CPU is probably doing 250000 FLOPs between each wavelength. What's the algorithmic order of an FFT? I could believe that each wavelength could correspond to one plane of data per iteration of the solver (128 planes times 16 iterations ~2000). Then, the noise would be coming from the boundary conditions: computing the corner of one plane requires loading in the data from the opposite corner, a position that is 128*128*4=64kB bytes away, but the cache is 512 kB. Maybe each wavelength of the noise is the sound of a new plane of data being moved into cache? It would happen 128*16 times per solve, which makes the 2000 cycles that we hear. Hmmmm. I can imagine that each plane requires 250kFLOPs to calculate. Wow, thanks for the analysis! Yes, the recording was in stereo. I also did a recording with the gain set to low , but the signal is super-quiet. I know that the fan was probably running at 1500 rpm (which is 25 Hz). Did you FFT over the part of the sample that contained the bzzt, or was that not enough data? Cool!The subroutine that makes the noise is a Poisson solver (an FFT-based solver, coincidentally), and my resolution is 128^3. Three calls lasts 1.5 seconds, and there is a small gap between the bzzts, so each one is 0.3 to 0.4 sec long. I suspect that the solver is an iterative one, but I don't know how many iterations. If the freq is 5.787 kHz, then it wold cycle about 2000 times during that interval, and the CPU is probably doing 250000 FLOPs between each wavelength. What's the algorithmic order of an FFT? I could believe that each wavelength could correspond to one plane of data per iteration of the solver (128 planes times 16 iterations ~2000). Then, the noise would be coming from the boundary conditions: computing the corner of one plane requires loading in the data from the opposite corner, a position that is 128*128*4=64kB bytes away, but the cache is 512 kB. Maybe each wavelength of the noise is the sound of a new plane of data being moved into cache? It would happen 128*16 times per solve, which makes the 2000 cycles that we hear. Hmmmm. I can imagine that each plane requires 250kFLOPs to calculate.

From: ext_137121

2008-12-08 07:43 pm (UTC)

Memory Access It's definitely something to do with the memory, because my CPU (Athlon X2) did it a few weeks ago, and it happened every time Firefox's memory usage jumped. I couldn't reproduce it with anything else (Farcry 2, Prime 95), and it went away when I reinstalled Firefox. It was pretty bizarre, and annoyed the hell out of me.

From: (Anonymous)

2008-12-08 11:40 pm (UTC)

Re: Memory Access I don't see you excluding simpler explanations, like the CPU fan turning on. Occam is sadbear.

From: technolope

2008-12-09 12:10 am (UTC)

Re: Memory Access That is weird. Who knows what a program as large as Firefox is doing to make that sound. If it happened every time FF memory usage jumped, that would point to something bus-related, or memory-to-CPU. Since my case at 128^3 can't hold the whole problem in L3 cache (needs >8MB, has 2 MB), it could very well be related to bus/memory issues. Thanks for the new data point!

From: (Anonymous)

2008-12-09 12:33 am (UTC)

It's a capacitor... I work on embedded systesms. And I've seen this for years when working with my company's products. During computationally intensive operations, we hear buzzes and clicks. During idle times, we don't hear much. I tacked the noise with a microphone and determined it came from the power supply -- a very cheap one mind you for the embedded system. After discussing with a few people, we concluded it was the drain and charging on the capacitors. Believe it or not, a charged capacitor will actually change shape just a small bit (due to the attraction of the plates). When the computer is idle, the capacitors don't change size noticably. When the computer is busy, it drains the capacitors leading to small changes in capacitor shape which leads to the sound you hear.



Why don't we hear a 120Hz (2x 60Hz) buzz all the time. Because the good capacitors filter that out. Our embedded computer's power supply took 12V DC and changed it to the various different voltages needed by the different chipsets. The sound originated from the later stages. I'm rather certain you are seeing something similar.



Try tacking the sound with a microphone. Let us know your results.

From: technolope

2008-12-09 12:41 am (UTC)

Re: It's a capacitor... If it's a capacitor, does that mean that the cap is going bad? I believe that the small motions of a tiny cap would be audible in certain situations. But why would just that one subroutine trigger the noise? I have never heard my computer make that sound before, and I hammer that machine mercilessly.



I recorded the sound with the built-in rear mics on my Zoom H2 hand-held recorder, running on battery power.



Thanks for your input.

From: _earthshine_

2008-12-09 01:08 am (UTC)

Re: It's a capacitor... This is interesting, and makes sense, too. I've been partially trying to think what electrical component would make an audible noise like that, and this explanation is a good one.



As for the subroutine-specific characteristic, tho, could it be that both solutions are correct -- id est, the subroutine triggers heavy use of some particular area of memory, or some particular bus, and the guard cap or some power sub-system cap related to that subsystem is bearing the load?

From: (Anonymous)

2008-12-09 01:33 am (UTC)

It's an inductor It is much more likely to be an inductor than a capacitor. You seem to be observing what is often called "inductor whine". Its origins are very similar to the capacitor explanation given, but inductors are much more mechanical beasts, and are much more likely to resonate based on the frequency of the switching regulator that generates the voltage for your processor or memory.



It is unrelated to the speed of your motherboard's busses, processor, etc. It is related to the switching frequency of the regulator that generates the core voltage for your processor. Your code stream is probably sucking just the right amount of current to make the component resonate.



I have seen this phenomenon on several PC motherboards (happily, never on ones I have designed). It is a pretty common occurrence.



Run your code in a continuous loop, open up your PC, and start gently touching various caps and inductors, and see if you can make it go away. You will probably find that the core of an inductor is vibrating inside its coiled copper wire conductor.



Yes, some things may be a bit hot in there, but no voltages on the motherboard are dangerous to touch. (Obviously, don't go poking around in the ATX supply)

From: technolope

2008-12-09 01:45 am (UTC)

Re: It's an inductor Sweet. Testable, if it wasn't for the big honkin' fan restricting access and the heat pipe covering some part of the power circuitry. Nevertheless, I'll give it a shot.



Instead, could I just kill the other 3 full-time processes and run the "noisy" one only, thus changing the total current through the potentially offending component?

From: _earthshine_

2008-12-09 04:38 pm (UTC)

Re: It's an inductor Wow... also fascinating. Very cool!



(...and i'm now dreaming up an inductor theremin...)

(Deleted comment)

From: technolope

2008-12-09 03:03 pm (UTC)

_earthshine_



Thanks for the extra analysis. I find it interesting that the broad-spectrum dark splotches seem to extend a bit into the lower-frequencies (though are not as pronounced there), and that the 3rd sound has a little split in it! Wow, nope, that sound seemed like a pure high-freq tone. When's calcuations showed that the tone was 13 kHz, I was suspicious, because I know what a high-freq tone sounds like (ike teenbuzz), and what I hear isn't that. I also thought that the tone lasted for more than a 1/10 sec---it sounded to me like the bzzt was 0.4 sec with a .1 sec gap between the 3 pulses. I fully expect to find that what I think I heard was based on some sort of phychoacoustic phenomenon.Thanks for the extra analysis. I find it interesting that the broad-spectrum dark splotches seem to extend a bit into the lower-frequencies (though are not as pronounced there), and that the 3rd sound has a little split in it!

From: _earthshine_

2008-12-09 04:44 pm (UTC)

Wow... nice software. (Did i just quote a zany 80s movie??)



Wild about the strong bzzt frequency showing there at more like 3.5kHz. Hrm. I wonder why the discrepancy? Now i'm hoping i didn't screw up my frequency axis. Gotta think about that.

(Deleted comment)