关于 I/O 的五分钟法则(Five-Minute Rule)

去年在对 SSD 做调查的时候就关注过这个五分钟法则,今天又发现了这篇文章的修订版(为了纪念 Jim Gray),这个话题倒是可以简单介绍一下,对架构师衡量 I/O 能力、Cache 评估和做硬件选型还是会有一些帮助的。

在 1987 年,Jim Gray 与 Gianfranco Putzolu 发表了这个”五分钟法则”的观点,简而言之,如果一条记录频繁被访问,就应该放到内存里,否则的话就应该待在硬盘上按需要再访问。这个临界点就是五分钟。看上去像一条经验性的法则,实际上五分钟的评估标准是根据投入成本判断的,根据当时的硬件发展水准,在内存中保持 1KB 的数据成本相当于硬盘中存储同样大小数据 400 秒的开销(接近五分钟)。这个法则在 1997 年左右的时候进行过一次回顾,证实了五分钟法则依然有效(硬盘、内存实际上没有质的飞跃),而这次的回顾则是针对 SSD 这个”新的旧硬件”可能带来的影响。

graefe_table3.gif

随着闪存时代的来临,五分钟法则一分为二:是把 SSD 当成较慢的内存(extended buffer pool )使用还是当成较快的硬盘(extended disk)使用。小内存页在内存和闪存之间的移动对比大内存页在闪存和磁盘之间的移动。在这个法则首次提出的 20 年之后,在闪存时代,5 分钟法则依然有效,只不过适合更大的内存页(适合 64KB 的页,这个页大小的变化恰恰体现了计算机硬件工艺的发展,以及带宽、延时)。

根据数据结构和数据特点的不同,对于文件系统来说, 操作系统倾向于将 SSD 当作瞬时内存(cache)来使用。而对于数据库,倾向于将 SSD 当作一致性存储来用。

这是一篇非常重要的文章(所以,建议读一下原文),其中对于数据库一节的描述尤其有趣(针对 DB 也有个五分钟)。限于篇幅,就不罗嗦了。

EOF


10 thoughts on “关于 I/O 的五分钟法则(Five-Minute Rule)

  1. Burgess

    “根据当时的硬件发展水准,在内存中保持 1KB 的数据成本相当于硬盘中存储同样大小数据 400 秒的开销(接近五分钟)”
    这句话是不是有毛病???1KB 和 400 提前怎么比较?根本就不是一样的东西

    Reply
  2. https://www.google.com/accounts/o8/id?id=AItOawkjiZiGfRnFJnQqdSh7atDvMNifjsLBk04

    @Burgess:
    大略看了一下,好像是指,硬碟的容量不重要,硬碟的IO能力才是问题。
    从一枚硬碟上读取4KB的资料,需要12ms,所以一秒只能读80份资料。这是一枚硬碟的上限。要更多,就要多买一枚硬碟。
    一枚硬碟要80美元,每秒却只能顶80份资料的存取,更好的办法是,把资料放到内存去。
    反正现在的内存容量很大,一条2GB的内存,可以储存500,000份资料(假设每份资料4KB大)。
    所以如果你有份4KB的资料,每秒要读一次,放到内存去是一个更好的选择。
    一份资料,若是需要频密的读取,那代表它占用了更多的硬碟IO能力,应该将这份资料放到内存去。
    除非这份资料很少需要读取(比如平均每400秒它才出场一次),这时候才会考虑将之存到硬碟里面去。

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *