ITPub博客

首页 > IT职业 > > I/O的5分钟法则

I/O的5分钟法则

作者:格伯纳 时间:2020-05-19 17:34:08 0 删除 编辑

在学习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有一定差距

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31509949/viewspace-3153590/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
管理员

注册时间:2018-03-30

  • 博文量
    2383
  • 访问量
    983892