» Thursday, 26 March A.D. 2009

on remembering history

Those who cannot remember the past are condemned to repeat it.

--George Santayana

The above is a quote I found fairly early in life. I thought of it upon reading some of the comments in the LWN article Better than POSIX?:

In a previous life, I worked on memory ordering models in CPUs and chipsets. During this recent ext4 hubbub, it dawned on me that the issues with ordering and atomicity in high-performance filesystem design may be isomorphic to memory ordering. Even if that's not strictly true, there's probably a lot to be learned by filesystem designers and API writers from modern CPU memory ordering models, in any case, because memory ordering is a well-explored space by this point in the history of computer engineering; and I don't just mean the technical semantics, either, but the whole social aspect, too, i.e., how to balance good performance with software complexity, how much of that complexity to expose to application programmers, who often have neither the time nor the background to understand all of the tradeoffs, let alone dot all the “i”s and cross all the “t”s, etc. Anyway, changing rename's semantics as you suggest would be the equivalent of a “release store” in memory ordering terms, and seems to be exactly the right kind of tradeoff in this situation.

I'm guessing few people have made the connection because memory ordering is something that you start caring about when you're doing concurrent (shared-memory) programming and such programming hasn't been terribly widespread. And because all the world's an x86 machine and few people have been exposed to something like PowerPC or worse, Itanium. (And lest my comments be interpreted as coming from an expert on memory ordering, I am far from it. My own experience with atomic instructions and memory ordering comes from reading through the code for locking primitives in Linux and trying to understand papers on the Java memory model.)

Thanks for that comment --- it's amazing how much knowledge we're rediscovering in computing. It's almost as if we're coming out of some kind of dark age.

One thing that struck me was a comment on a Slashdot story about a “breakthrough” in data center energy optimization. The comment showed that the problem of deciding when to boot up additional servers to meet demand was isomorphic to the problem of steam boiler management --- right down to the start-up and constant energy costs --- and that the problem had already been thoroughly addressed in literature from the turn of the last century. (Emphasis in the original.)

Heh. That comment reminded me of a blurb I read about a week ago and cannot remember the location of it. The essential message was: Need a thesis topic? Go back 10 years in the computing literature and find an idea that can be dressed up with modern terminology and jargon. Nobody will notice.

And that reminds me of a comment I once read about hot new web technologies and discovering the next one. (I think it was related by Paul Graham, but I cannot find it on his site.) The essence was that today's hot web technology is simply a Unix service dressed up for the modern era. ICQ? talk. Blogs? .plan files. Web forums? Usenet. I suppose Twitter is finger. So if you want to invent the next hot web property, figure out what service Unix provided that hasn't be translated for a generation that's never seen a terminal.

posted by Nate @ 10:40PM