Thursday, July 09, 2009

Bing!


Try Bing.com, the new Microsoft search site, on "ham radio". Interesting results, especially the videos at the bottom.

http://www.bing.com/search?q=ham+radio

Saturday, July 04, 2009

Cooling, Undervolting, and Greening Gimli

So here's the best answer so far. I don't want to make an unsightly hole in my computer case's side wall (see prior post), but I need to get air flow under control for best cooling my Core i7 920 chip. The solution is to use some 4-inch plastic air hose with wire reinforcing to direct supply air from one of the two front air inlet fans (lower right on photo) to the CPU cooler fan. This minimizes the "blow back" of hot air from the CPU cooler outlet to the cooler inlet. This solution still works well when the case is buttoned up. We don't have to worry about the acoustic and radio frequency noise that would leak out through any new holes.

The hose is available at hardware stores for clothes dryer connections.

So, the airflow and CPU cooling is about as good as it is going to get without moving to a more exotic chip cooler scheme. The next step toward controlling operating temperature is to minimize CPU power consumption. My philosophy is to keep the specified CPU performance (i.e., clock rate), but to reduce operating voltage to a safe minimum. This is called "undervolting".

(Many computer tinkerers want to get the highest performance possible from their chips, e.g., by "overclocking". This generally requires operating at higher voltage which in turn means more power dissipation, bigger and noisier cooling systems, etc.)

I devised a simple Python program that loads all 8 "processors" (4 cores x 2 hyperthreads/core) for a specific interval and measures the temperature rise. This is a good test of the cooling system and the power level of the CPU (as a function of core Voltage, clock rate, etc.) It is not meant to be a typical application program, just a source of heat. (Actually, it is such a trivial program -- a tight loop -- that it causes more power drain than typical real programs.)

The standard CPU core Voltage (Vcore) is 1.29375 V. Our Gigabyte GA-EX58-UD4P motherboard provides great flexibility in selecting all kinds of CPU parameters, but I am mainly varying Vcore. Running the test program, I observe a final case temperature (Tc) of 65 C and mean junction temperature (Tj) of 75 C. The AC supply power is about 204 W under load, and 98 W at idle.

I tried successively lower Vcore settings. At Vcore = 0.91250 V, the computer would begin the BIOS display at boot, but would fail before it completed. At Vcore = 0.95000 V, it booted partly into Linux, but it failed before getting to the Ubuntu login. At Vcore = 0.97500 V, we had a successful boot. The supply power was 150 W under load, 97 W at idle. Final temperature was Tc = 53 C, Tj = 57 C.

It is not clear how stable the system would be at 0.975 V under all conditions (room temperature, computing loads, etc.), so I raised the voltage a couple of steps to Vc = 1.01250 V. At this voltage, we ended with Tc = 53 C and Tj = 58 C. AC power under load was 155 W; at idle, 97 W.

From Intel's data, it is not clear what the ultimate "safe" operating temperature of the i7 920 chip is. As we said earlier, it comes down to a subjective judgement about how much stress is acceptable. Less is always better from the standpoint of system stability and longevity. Some of Intel's charts suggest that Tc = 68 C is an acceptable maximum. In that case, our operating maximum of 53 C should be fine. (Note that we must allow for ambient temperature changes. Our measurements here are at Tamb ~ 20 C, but our ambient could rise to ~ 30 C on a hot day.)

For now, the engineering is "done", and we can go back to BOINC running all day without fear. We have also trimmed about 25% from our power bill.

Monday, June 29, 2009

Gimli Explorations (Core i7 Thermal)

My earlier posting introduced Gimli, our new Intel Core i7 920 system. Time for some progress reports. My main focus has been operating with a heavy scientific computing load -- running under the BOINC framework for distributed computing on large-scale scientific problems, such as the Search for Extraterrestrial Intelligence (SETI), protein folding, etc.

The system is based on a Gigabyte EX58-UD4P motherboard in an Antec "Solo" case:

The CPU cooler is the stock Intel system. The photo shows the bottom of the cooler with the central copper disk, which after coating with heat sink compound presses down on the top of the CPU. Under the heat sink is a fan that draws air down (up in the photo) from "cool" the case interior, past the fins, and then radially outward to be drawn away by the case's nearby exhaust fan.


Normally, the Antec case is covered on the side by a solid removable panel, which works very well for noise control and appearance. However, Intel's Chassis Air Guide manual suggests a different "solution" for good thermal performance. They propose a duct leading from ambient air external to the case down to the top of the CPU cooler. This will prevent recirculation of warm air within the case that will tend to heat the CPU unnecessarily. So, I did experiments under 3 conditions: (1) cased closed with normal side, (2) side removed, and (3) side removed with temporary duct installed. The photo shows the temporary duct in place, made from two 8.5 x 11 inch sheets of paper and Scotch tape. (I suppose I should have used duct tape...)


The computing load ranged from zero (Ubuntu Linux 9.04 idling) drawing 100 W AC power, to full load (8 parallel threads of SETIathome jobs) drawing about 200 W AC. The LCD display is not included in power measurements, and I am running at stock clock speeds -- no overclocking.

There are 9 temperature values reported by the CPU: one junction temperature for each hyperthread (two per CPU core) and one temperature for the CPU case (below the chip). There is considerable discussion about how to treat these values. For example see the post at Tom's Hardware site. There are calibration questions, and there are questions about what actual CPU temperatures should be permitted. The Core i7 has several self-protection features that will control power dissipation if temperatures are allowed to get "too high". Unfortunately, there is apparently no published maximum temperature spec for the chip. In any case, the maximum we want to tolerate is subjective. Lower temperatures generally mean more operating stability and longer lifetimes.

It's not clear if there is any meaning to any difference between the two temperature readings associated with each physical core -- or even between the different cores, assuming that the Linux scheduler distributes the computing work equally among cores. These junction temperatures typically vary up to +/- 2 C among the group. I will report only the approximate median Tj of the 8 junction readings. I also report the case temperature Tc.

The numbers given are summaries of a number of readings. I don't claim great statistical power -- only a rough comparison of the options. Room temperature ~ 74 F.

Antec side panel on
Sytem Idling
Tj = 43 C; Tc = 41 C
System 75% load (6 jobs)
Tj = 72 C; Tc = 63 C
System 100% load (8 jobs)
Tj = 75 C; Tc = 63 C

Antec side panel off
System 100% load
Tj = 72 C; Tc = 62 C

Antec side panel off; paper duct installed
System 100% load
Tj = 67 C; Tc = 62 C

Moral: Intel's ducting scheme really does make a substantial improvement. A 5 - 8 C temperature reduction is significant, but in the absence of hard temperature specifications, it is hard to say how great a benefit to system stability and lifetime will result.

Another moral is that if you buy a packaged Core i7 system from a mainstream manufacture, you are likely to get an "engineered" thermal system that is better than what a do-it-yourselfer is likely to concoct with generic motherboards and cases. Of course, it's less fun and more expensive to buy complete systems!

The cooling improvement is specific to Intel's standard CPU cooler. There are numerous more exotic chip coolers on the market, which may not require a ducting system.

My options seem to be:
  • Accept up to 75 C junction temperatures when running full loads.
  • Cap operation at 50 - 75% of full load.
  • Cut a hole in the Antec side panel and install a permanent duct.
  • Check out a different CPU cooler.
Note also that the BOINC / SETI CPU load is only one particular application. It is not hard to make programs with more or less power dissipation, but this test does seem to be representative.

Thursday, June 11, 2009

Say hello to Gimli

Gimli is a new home-built system comprising an Intel Core i7 CPU, 6 GB RAM, 1 TB HD, and GeForce 9500 graphics. It runs 64 bit versions of Ubuntu 9.04 and Windows 7. The chip provides 4 CPU cores with hyper-threading, or 8 concurrent threads of execution, more or less.

I am hoping to start to understand CUDA programming and otherwise to see what kinds of DSP we can do. Oh, and maybe load a game or two.

Friday, May 15, 2009

A New Featurette


I incorporated "share this" into this blog. Now you can repost all the wisdom here to Facebook or what-have-you! See the option at the bottom of each posting.

Thursday, April 02, 2009

Do Not Read!


The latest technology toy here (and supposed moneysaver) is the Amazon Kindle 2. I unsubscribed from my dead-tree New York Times and signed up for the Kindle on-line NYT. I calculate that after 18 months or so, the savings will have paid for the Kindle. We'll see about that.

It has been an interesting experience reading the newspaper as if it was a book. I find I tend to get wrapped up in long stories much more easily than before, and I now appreciate some of the fine writing skills of those ink-stained wretches at the Gray Lady. If I let myself, I can spend hours more every day with the paper.

On the other hand, it would be nice if the Times were a little more careful and intentional about formatting itself for the Kindle. Navigation is not too hard, but many of the cues about which articles are more significant than others is lost. Letters to the editor loom as large at first blush as feature articles. (There is no word count provided, as there is for Newsweek.)

Today's bit of strangeness appears above. An obituary is published under the title "Do Not Publish". If that came out in the print edition, there would be hell to pay, but maybe quality control for the Kindle is an afterthought. I checked the online web edition, which has the correct title.

Tuesday, March 31, 2009

Why good QSOs go bad (propagation)

KB6NU has an interesting propagation question about why good QSO's go to pot.

This evening, just after dark, I called CQ on 40m CW. On the second call, VE3QO, in Ottawa, ON replied to my call. On that first transmission, he was at least 10 dB over S9... Unfortunately, on the next go-around, VE3QO was a lot weaker, and on his third transmission he was nearly unreadable.

...

My question is what propagation mechanism is causing this behavior? Is it perhaps the combining of the F1 and F2 layers? If that’s the case, why is the calling station so unusually strong on the first transmission?

OK, I'll bite. I've had similar experiences, not always at sunset. I call CQ -- or answer a CQ -- and signal reports are 59+. After a few minutes, we're both down in the mud. On one level, that's a selection effect. We are more likely to call or be called if the propagation is very good -- we answer the strong stations first. Statistically, you'd expect to start talking to people at a prop. maximum, and things will naturally get worse from there, sometimes dramatically.

My hand-waving "scientific" explanation for both the sunset ("gray-line") and the variability issues comes down to thinking of the ionosphere as a time- and spatially variable propagation medium. We get strong skip when there are (a) strong gradients (acting as mirrors) in ionospheric conductivity (as around sunrise/sunset) and (b) when the gradients have a favorable geometry for a given path. E.g., they tend to lie on ellipsoids that have the two stations as foci, and the ellipsoids are arranged (in Fresnel zones) so that multiple paths arrive in phase.

So it's no surprise that we see a range of signal strengths. Why do we get such a range? We get momentary deep nulls when signals arrive out of phase and cancel. Maybe the question is why do we see the opposite - short periods of very strong propagation? Again, with hand waving, it is reminiscent of the "cusps" you see, for example, on the bottom of a sunlit swimming pool, as the more or less random waves act as lenses that focus light in very bright lines.