How modern CPUs are like (modern) disks

Once upon a time, hard disk transfer rates were an issue of seriousconcern. It mattered a great deal how fast your disks and their IOchannels could run, and changing technologies could have significantperformance effects; IDE versus SCSI and so on really made a difference.

For a lot of people, those days are long over. Disk interconnects areessentially irrelevant (for this) and streaming read and write bandwidthhas become if not irrelevant then generally not important. What matters,what limits performance, is seek time.


My opinions on when you should let ZFS handle RAID stuff

Given the previous entry , here's my opinions so faron when you should let ZFS handle your redundancy and when you shouldhave your storage backend do RAID. (This assumes that you have a storagebackend; if not, well, you don't have much choice.)

  • if you are doing mirroring, you really want to let ZFS handleit because ZFS will do a much better job of handling small problemsthan your storage backend can.

  • if you have a SAN and need your frontends to survive temporary

Why you should let ZFS handle the RAID stuff

In a comment on my last entry , Matt Simmons asked why you'd let ZFS handleRAID level issues instead of just handling them in your storage backend(SAN or otherwise). Having ZFS do this is the recommended practice, fora number of reasons (some of which the ZFS FAQs will tell you about).

Here's the reasons for letting ZFS handle the RAID stuff that I knowabout (or at least can think of right now):


What I know about how ZFS actually handles spare disks

Like many other RAID-oid systems, ZFS has a notion of spare disks;you can add one or more spare disks to a pool, and ZFS will use themas necessary in order to maintain pool redundancy in the face of diskproblems. For details, you can see the zpool manpage.

Well, sort of. Actually, how ZFS handles spare disks is significantlydifferent from how normal RAID systems handle them, and the pleasantlybland and normal description of spares in the zpool manpage elides asignificant number of important


Postfix versus Exim

We use both Postfix and Exim here, and in the process of working withboth of them I've formed some opinions. My view on the two is this:

Postfix is easier to do simple things with. Exim is much easier todo complex things with.

A Postfix null-client configuration (one that sends all mail to asmart machine somewhere, putting a default domain on any address thatdoesn't already have one) is maybe ten lines of configuration. If youcan do that in ten lines


Some ways to avoid needing a public ticketing system

Suppose that you are in the situation from yesterday's entry , where your support volume is too high to let youuse a single support alias that everyone is on but particular supportrequests are passed from person to person. As it happens, I think thatthere are still ways to avoid having a public ticketing system as yourprimary support method.

The problem that a public ticketing system is really solving here isthat you need a separate point of contact for each ticket that goesto several people (but not everyone)


A use for ticketing systems as your primary support method

In the past, I've been somewhat negative abouthaving a ticketing system as the primary method of talking with thesysadmins. But I have to admit that sometimes such a ticketing systemactually makes sense, and here's one example:

Suppose that your support group is sufficiently busy (you serve eithera large organization or one with a lot of problems) that a singlesupport alias would have too much traffic to be read by everyone all ofthe time. In this environment you have to hand support requests to


What typing ^D really does on Unix

Everyone knows what ^D does on Unix; it generates an end of file,so that cat or various other programs will exit (especially ifthey have accidentally wound up reading from standard input ).

But this is just the usual effects of typing ^D; it is not whatit actually does. What ^D actually does is simple but subtle:

Typing ^D causes the tty driver to immediately finish a read() .

Normally doing a read() from a terminal is line-buffered inside thetty


Why the Unix EINTR semantics (probably) exist

Given the problems that the POSIX EINTR stuff causes to various programs, one might wonder why they existat all. Why not make all system calls restart when signals aredelivered?

What I believe it comes down to is library safety.

Suppose that your signal handler wants to change the main flow ofthe program. There are two plausible mechanisms for this: you canimmediately transfer control back to the main flow of your program withsome changes (the traditional setjmp()/longjmp() approach), or you can


An interesting issue with doing NFS over TCP (apparently)

We have a lot of NFS filesystems and, like most people today, we use NFSover TCP instead of over UDP. But this leads to a problem; sometimeswhen our systems reboot, they can't mount all of the NFS filesystems onthe first attempt. It generally takes several minutes to get to a statewhere all of them are mounted.

(We don't use the automounter, so we mount everything at boot; we have our own solution for the problemsthe automounter is trying to solve.