Chinaunix首页 | 论坛 | 博客
  • 博客访问: 467791
  • 博文数量: 143
  • 博客积分: 6159
  • 博客等级: 准将
  • 技术积分: 1667
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-25 23:08
文章分类

全部博文(143)

文章存档

2013年(1)

2012年(11)

2011年(55)

2010年(76)

分类:

2011-01-09 17:10:59

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

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

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

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

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

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

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

现在,如果有一条 1KB 的记录,如果它每秒钟都会被访问,那么把它放在 disk 上就会花费 2K$ ,而如果把它放在 memory 上,只需要 5$ ,所以,这样的一条记录当然应该被放在内存中。按照这个思路,我们可以计算一下临界点。如果一个数据每 400 秒才会被访问一次,那么它在 disk 上的 cost 2K/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:

  87 年的

  97 年的

  07 年的

阅读(576) | 评论(0) | 转发(0) |
0

上一篇:天气预报

下一篇:一点感慨

给主人留下些什么吧!~~