绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
I/O的5分钟法则
2020-05-19 17:34:08

在学习PostgreSQL时,发现默认的Page大小为8k,一直不明白其设定原因。在读到Michael Ralph Stonebraker的《Architecture of a Database System》,知道了“The Five-Minute Rule”,于是在这里和大家分享一下。

1987年,Jim Gray[1]和Gianfranco Putzolu推出了的5分钟法则,以权衡内存和I / O容量。他们的计算将使用内存芯片和磁盘驱动器的适当价格,将保存一条记录(或页面)的成本与每次访问该记录(或页面)时执行磁盘I / O的成本进行比较。他们的规则的名称是指访问之间的收支平衡时间间隔。如果更频繁地访问记录(或页面),则应将其保存在内存中;否则,它应该保留在磁盘上并在需要时读取。

根据当时的价格和Tandem设备的性能特征,Gray和Putzolu发现保存1KB记录的RAM的价格大约等于每400个访问该记录所需的磁盘驱动器的(部分)价格。秒,他们四舍五入到五分钟。收支平衡间隔大约与记录大小成反比。Gray和Putzolu为100字节的记录花了1个小时,为4 KB页面花了2分钟。

BreakEvenReferenceInterval=\frac{PagesPerMBofRAM}{AccessesPerSecondPerDisk}\times \frac{PricePerDiskDrive}{PricePerMBofRAM}

  • PagesPerMBofRAM:表示内存每兆字节的Page数,如果page size = 4KB,则该值为1MB/(4KB/page) = 256 page/MB。
  • AccessesPerSecondPerDisk:每块磁盘每秒支持的大IO请求数,如下表所示为250Page/(Second*Disk)。
  • (PagesPerMBofRAM /AccessesPerSecondPerDisk):表示1兆的空间通过磁盘访问的方式所需要的秒数。256/200 = 1.25(Second*Disk)/MB,表示1兆字节需要1.25个盘秒来完成(类似工作任务按人月来做单位)。
  • PricePerDiskDrive:表示一块磁盘的成本,如下表所示为48$/disk。
  • PricePerMBofRAM:表示每兆内存的代价,如下表所示为50$/(2048)=0.024$/MB。
  • PricePerDiskDrive/ PricePerMBofRAM:表示用来买磁盘的钱可以买多少兆内存。48/0.024=2000MB /disk。
  • 整个公式表示用磁盘读取的耗费时间界限,2000MB *1.25=2500second,合41min。如果一条数据的访问周期低于41分钟,则应该放在内存中,否则应该放在磁盘中。

对于这个公式我们可以这样理解。

1MB 存放在内存中的代价是0.024$/MB,1MB数据使用一次相当于花0.024$换来的。

1MB 存放在硬盘中的代价是 1.25 (second*disk)/MB *48($/disk) / 1个访问周期 = 1.25 *48/2500= 0.024$,1MB数据放在硬盘中,2500秒访问一次,花0.024$。

如果访问周期小于2500秒,放在硬盘中的代价大,周期大于5100秒,放在硬盘中就赚了。

后来在1997年又发布了《The Five-Minute Rule Ten Years Later, and Other Computer Storage Rules of Thumb》。再次验证了法则的有效性。

当时的各项参数参考值,假设page为4kb:

  • PagesPerMBofDRAM = 256 pages/MB (i.e., 8KB pages)
  • AccessesPerSecondPerDisk = 64 access/sec/disk
  • PricePerDiskDrive = 2000 $/disk (9GB + controller)
  • PricePerMBofDRAM = 15 $/MB_DRAM

532s =\frac{256 pages/MB}{64 access/sec/disk}\times \frac{2000 $/disk}{15 $/MB}

超过了5分钟法则,而改为8kb,则为:

266s =\frac{128 pages/MB}{64 access/sec/disk}\times \frac{2000 $/disk}{15 $/MB}

符合5分钟法则,则此时建议为8kb大小的page。

在2007年,图灵奖[2]获得者的Jim Gray,出海后失踪,至此下落不明,无人能联系到他。而在2009年,Gianfranco Putzolu基于原有的内容推出了《The Five-Minute Rule 20 Years Later》。随着在传统的硬盘和RAM内存的鸿沟之间出现了闪存,五分钟规则现在可以运用到对于今天磁盘比较合适的大页上面,可以应用到它们的快速传输带宽上面,也可以应用到闪存盘上面,这些闪存盘具有小页,很适合快速访问。闪存填补了RAM内存和磁盘之间的鸿沟,在许多方面:访问代价,访问延迟,传输带宽,空间密度和能耗。因此,在未来,闪存会大量应用在操作系统、文件系统和数据库系统中,迫切需要研究合适的系统体系架构。在这些系统中利用闪存的基本的软件体系架构,被称为“扩展缓冲池”和扩展磁盘。

按照上述参数,目前的建议大小为:

\frac{X pages/MB}{83 access/sec/disk}\times \frac{80 $/disk}{0.047$/MB}\leq 400s

如果磁盘还想维持5分钟法则的话,则需要设置page为64kb

而如果是SSD的话,则page应设为:

\frac{X pages/MB}{6200 access/sec/disk}\times \frac{999 $/disk}{0.047$/MB}\leq 400s

如果磁盘还想维持5分钟法则的话,则需要设置page为8kb[3]

综上所述,目前在磁盘环境下其实应该重新考虑页面大小,比如64kb。而在SSD环境下,8kb还是可以保证5分钟法则的。同时,5分钟法则仅仅是从成本方面考虑,如果在不考虑成本的情况下,追求极限性能,这个就需要通过优化实现了,比如根据业务情况调整页面大小,加大缓存,优化算法等等。

参考

  1. ^https://en.wikipedia.org/wiki/Jim_Gray_(computer_scientist)
  2. ^因在数据库和事务处理研究和实现方面的开创性贡献而获得1998年图灵奖
  3. ^在这里本次结果大约为438s,和400有一定差距
分享好友

分享这个小栈给你的朋友们,一起进步吧。

华山论剑
创建时间:2019-02-22 18:53:00
没了烟火气,人生就是一段孤独的旅程·····于是,在ITPUB,我们以武论英雄!
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

栈主、嘉宾

查看更多
  • 栈栈
    栈主
  • ?
    嘉宾

小栈成员

查看更多
  • u_9a3ed7a37f8e4a
  • daisyplay
  • boss_ch
  • Jack2k
戳我,来吐槽~