The 5 minute rule: 一部paper的连续剧

来源:互联网 发布:淘宝店铺申请直播条件 编辑:程序博客网 时间:2024/04/29 19:05

今天很无意的研究了一篇92年的paper,并且在它的reference里找到了另一篇感兴趣的文章,一篇87年的老古董。

The 5 minute rule for trading memoryfor disc accesses and the 10 byte rule for trading memory for CPU time”,SIGMOD 87,就是这篇了。

作者绝对的大牛,Jim Gary,就是前几年失踪的那位,拿过图灵奖的。

文章提出了两个法则:The Five Minute RuleThe Ten Byte Rule。后面这个法则我没太仔细看,不过第一个法则很有意思。

Five MinuteRule: data referenced every five minutes should be memory resident. 意思就是说,如果一个数据每五分钟就会被访问一篇,那么它就应该被放在memory里面。

文章也给出了一个简单的论证。87年的一个硬盘,每秒能够random的访问数据15次,它的售价是15K$(好贵啊)。所以,如果有一个操作,每秒钟都要执行一次disk的访问,那么这个操作的cost应该是1K$。注意,1K$的价格指的是一个每秒都要执行一次的操作,而不是每秒每操作,我看原文的时候在这困扰了很久。同时,cpu和其它方面的cost也要1K$。所以,每秒钟都要执行一次disk的访问,这个操作整个cost2K$

接着说说内存,那个年代,一个1MB的内存大概是5K$,那么平均一个KB的价格是5$

现在,如果有一条1KB的记录,如果它每秒钟都会被访问,那么把它放在disk上就会花费2K$,而如果把它放在memory上,只需要5$,所以,这样的一条记录当然应该被放在内存中。按照这个思路,我们可以计算一下临界点。如果一个数据每400秒才会被访问一次,那么它在disk上的cost2K/400 = 5$,正好等于把它放在内存上的开销。因此,如果一个数据访问间隔小于400秒,那么它就应该放在memory上,反之,应该放在disk上。

400秒大概就是5分钟了(其实已经6分钟多了)。

这个论证还是非常简单直观的。不过这里有一个“反常理”的地方。一般衡量disk的性价比,会用capability这个参数,比如每GB多少多少钱。但在这里,衡量disk用的是IO。其实仔细琢磨一下,会发现这样做是理所当然的。因为paper的目的是想发现什么时候数据应该放在memory或者是disk,而其中的关键就是达到最优化的io

 

这篇paper大概就说到这了。更有意思的是,在10年后的97年和20年后的07年,Jim Gary和后继者又写了两篇paper作为update(写paper能写成连续剧,佩服佩服)。最新的07年这篇讨论的是flash出现以后对于系统设计的一些影响,有兴趣的可以深入的研究一下。

 

Reference:

http://delivery.acm.org/10.1145/40000/38755/p395-gray.pdf 87年的

http://research.microsoft.com/en-us/um/people/gray/5_min_rule_SIGMOD.pdf 97年的

http://staff.ustc.edu.cn/~jpq/paper/flash/2007-DaMon-The%20Five-Minute%20Rule%20Twenty%20Years%20Later,%20and%20How%20Flash%20Memory%20Changes%20the%20Rules.pdf 07年的

 

原创粉丝点击