« CSS Side Channel Attack | Main | Changing the world by treating people as humans »

The 5 minute rule

There is a great paper every computer engineer should read, The 5 minute rule for trading memory for disc accesses and the 10 byte rule for trading memory for CPU time:

Abstract

If an item is accessed frequently enough, it should be main memory resident. For current technology, "frequently enough" means about every five minutes. Along a similar vein, one can frequently trade memory space for CPU time. For example, bits can be packed in a byte at the expense of extra instructions to extract the bits. It makes economic sense to spend ten bytes of main memory to save one instruction per second. These results depend on current price ratios of processors, memory and disc accesses. These ratios are changing and hence the constants in the rules are changing.

Published by Tandem in 1986 it is still relevant today. Quick and fun, the paper provides a analytical tool that is powerful beyond it's original scope. It has been updated twice, ten years later (1997), and twenty years later (2007). The ten year paper show how the rule still stood at that time. The twenty year later paper provides new insights in to the topic, has lots of good analytical work, and should be read if you are trying to apply the 5 minute rule to modern systems.

If I was teaching computer science The 5 Minute Rule would be required reading.

TrackBack

TrackBack URL for this entry:
http://0x0000.org/cgi-bin/mt/mt-tb.cgi/28

Comments (2)

(Something you probably already know, but....)

The other thing that needs to be considered is development cost.

If your only goal is to make the most scalable system or the most efficient system, then this is something you do definitely need to consider.

But that's not always your goal.

Sometimes developing a scalable system or an efficient system isn't cheap in the short term (because of development costs) even though it may be more cost effective in the long term.

Sometimes company cash flow is important.

Sometimes time cannot be spent on engineering scalability because you don't want to loose other opportunities (and incur an opportunity cost).

With software development, you more often have to answer the question of "when" to do things, rather than "how" to do things. (Even though answering the "how" is more interesting.)


-- Charles Iliya Krempeaux
http://changelog.ca/

Jonathan Moore:

I think you may have missed the point of this paper. The point is when buying hardware you can spend money on spindles or ram this work tells you which is cheaper.

Post a comment

(If you haven't left a comment here before, you may need to be approved by the site owner before your comment will appear. Until then, it won't appear on the entry. Thanks for waiting.)

About

This page contains a single entry from the blog posted on December 27, 2007 6:36 PM.

The previous post in this blog was CSS Side Channel Attack.

The next post in this blog is Changing the world by treating people as humans.

Many more can be found on the main index page or by looking through the archives.

Creative Commons License
This weblog is licensed under a Creative Commons License.
Powered by
Movable Type 3.33