Christopher B. Browne's Home Page

12. Building a Linux Box

An excellent reference on building Linux systems is Building the Perfect Box: How to Design Your Linux Workstation, written by Eric Raymond.

It contains some essential principles that hold very true, despite the fact that there have been some hardware improvements since the time at which it was written.

The base axiom is: " Contrary to what CPU sales people would tell you, system performance is typically I/O bound, and not CPU bound."

While not universally true, this is true for the vast majority of computer systems. Even with CPU-bound processing, the 300MHz Pentium II processor currently reigning as "state of the art" in the Intel world can process things up to 3.5 times faster than one can do memory fetches across the 66MHz PCI bus. The situation is even more extreme with Digital's 500MHz+ Alpha CPUs. In order to get any kind of performance they need to have lots of L1/L2 cache...

Of course, that has gotten remarkably dated; we now have "multiple GHz" systems. But all the same, CPUs have continued to increase in speed greatly more than memory buses have.

12.1. Conclusions that can be drawn from the axiom

At the time that the article was written, P166 machines were "state-of-the-art," and P133s were getting pretty cheap. In November 1997, it's Pentium II-300's that are "big, bad, and expensive" and P200s are pretty cheap. (Particularly if you consider the AMD or Cyrix "clones.") In late 1998, it it is "PII 450's" that are fast and expensive, while PII-300's are cheap.

The latest major change is that Intel is trying to eliminate socket-compatible chips by its move to Pentium Pro and Pentium 2. The new designs provide the putative advantage of improved cacheing at the cost that motherboard manufacturers now have two more mutually-incompatible motherboard designs to play with. My tendancy is to rebel and use "Socket 7" Cyrix/AMD CPUs instead.


Note that the principle of "buy less CPU, buy more RAM" may be true even in some situations where applications are CPU-intensive. CPU-intensive applications do a lot of updating of memory. Buying more memory and perhaps looking at a better motherboard and tuning memory access time may still beats out getting a faster CPU. If the CPU is waiting to fetch an instruction a 66MHz PCI bus, the wait time doesn't depend very much on whether it is a P133 or a P233 processor...

Designing a Linux Machine provides a somewhat more recent presentation from a British perspective.

12.2. Digital Cameras

I have an Olympus 320L digital camera; this material represented useful research material towards decisionmaking in my purchase.

Digital cameras do not provide, at present, even at the really high end, as good resolution as you can get from a 35MM camera.

However, they do allow instant "development" of shots, allow the user to discard unwanted pictures at no cost, and are perfect for populating web pages with images.

Many of them seem to use the same communications protocols, which certainly eases the process of putting together software to connect them to Linux-based machines as well as other systems that have similar resemblance to Unix.

12.3. Scanners

I've got a UMAX S6E. It works, but I haven't used it much. It would be made really useful if there were more Electronic Document Management System (EDMS) software available.

12.4. CD-ROMS

12.5. Common Hardware Problems

12.6. Free Hardware Designs

Several projects have come along that seek to do the same for hardware designs that the FSF has done for software; they seek to provide designs for CPUs and the likes that are available under "free" licenses so that anyone may, free of royalties, build and improve these designs.

It is an interesting idea, and it would be quite nice if it actually turned into something. Unfortunately, integrating these designs so as to construct systems is a dauntingly complex task, and it does not become economically viable unless they can set up production runs of on the order of hundreds of thousands of units, which is a costly endeavor.

But we can dream a little, can't we?

12.7. Linux Hardware Projects

Contact me at