Disk is Tape, Flash is Disk

简介:

今天遇到一副来自Google的图罗列了常见操作的时间损耗,见高清大图:

 


  这张图让我想到之前在使用Redis时看到Jim Gray那句被坊间流传许久的话:"Tape is Dead, Disk is Tape, Flash is Disk, RAM Locality is King".(磁带已死,磁盘是新磁带,闪存是新磁盘,随机存储器局部性是为王道.) 这句话的原始出处在此: http://www.signallake.com/innovation/Flash_is_Good.pdf

 

这里有一篇中文解读: http://www.infoq.com/cn/news/2008/07/ram-is-disk


Jim Gray
在过去40年中对技术发展有过巨大的贡献,“内存是新的硬盘,硬盘是新的磁带”是他的名言。“实时”Web应用不断涌现,达到海量规模的系统越来越多,这种后浪推前浪的发展模式对软硬件又有何影响? 

Tim Bray早在网格计算成为热门话题之前,就讨论过以RAM和网络为中心的硬件结构的优势,可以用这种硬件建立比磁盘集群速度更快的RAM集群。
对于数据的随机访问,内存的速度比硬盘高几个数量级(即使是最高端的磁盘存储系统也只是勉强达到1,000次寻道/秒)。其次, 随着数据中心的网络速度提高,访问内存的成本更进一步降低。通过网络访问另一台机器的内存比访问磁盘成本更低。就在我写下这段话的时候,Sun的 Infiniband产品线中有一款具备9个全互联非阻塞端口交换机,每个端口的速度可以达到30Gbit/sec!Voltaire产品的端口甚至更多;简直不敢想象。(如果你想了解这类超高性能网络的最新进展,请关注Andreas Bechtolsheim在Standford开设的课程。)
Tim还指出Jim Gray的名言中后半句所阐述的真理:“对于随机访问,硬盘慢得不可忍受;但如果你把硬盘当成磁带来用,它吞吐连续数据的速率令人震惊;它天生适合用来给以RAM为主的应用做日志(logging and journaling)。” 

时间闪到几年之后的今天,我们发现硬件的发展趋势在RAM和网络领域势头不减,而在硬盘领域则止步不前。Bill McColl提到用于并行计算的海量内存系统已经出现

内存是新的硬盘!硬盘速度提高缓慢,内存芯片容量指数上升,in-memory软件架构有望给各类数据密集的应用带来数量级的性能提升。小型机架服务器(1U、2U)很快就会具备T字节、甚至更大量的内存,这将会改变服务器架构中内存和硬盘之间的平衡。硬盘将成为新的磁带,像磁带一样作为顺序存储介质使用(硬盘的顺序访问相当快速),而不再是随机存储介质(非常慢)。这里面有着大量的机会,新产品的性能有望提高10倍、100倍。

Dare Obsanjo指出如果不把这句真言当回事,会带来什么样的恶劣后果—— 也就是Twitter正面临的麻烦。论及Twitter的内容管理,Obsanjo说,“如果一个设计只是简单地反映了问题描述,你去实现它就会落入磁盘 I/O的地狱。不管你用Ruby on Rails、Cobol on Cogs、C++还是手写汇编都一样,读写负载照样会害死你。”换言之,应该把随机操作推给RAM,只给硬盘留下顺序操作。 
 
下面是来自slideshare的两份资料(不显示多刷几遍):


 

深入理解计算机系统

回顾一下计算机的经典教材《深入理解计算机系统》中对高速缓存的讲解,书中是从最简单的hello程序切入的:

 


  hello程序的机器指令最初是存放在磁盘上的,当程序加载时,它们被复制到主存;当处理器运行程序时,指令又从主存复制到处理器.相似地,数据串“hello, world\n”初始时在磁盘上,然后复制到主存,最后从主存上复制到显示设备.根据机械原理,较大的存储设备要比较小的存储设备运行得慢,而快速设备的造价远高于同类的低速设备.例如,一个典型系统上的磁盘驱动器可能比主存大1000倍,但是对处理器而言,从磁盘驱动器上读取一个字的时间开销要比从主存中读取的开销大1000万倍.针对这种处理器与主存之间的差异,系统设计者采用了更小,更快的存储设备,即高速缓存存储器(简称高速缓存),作为暂时的集结区域,用来存放处理器近期可能会需要的信息. 

   在处理器和一个又大又慢的设备(例如主存)之间插入一个更小更快的存储设备(例如高速缓存)的想法已经成为了一个普遍的观念.实际上,每个计算机系统中的存储设备都被组织成了一个存储器层次结构,上图所示.在这个层次结构中,从上至下,设备变得访问速度越来越慢,容量越来越大,并且每字节的造价也越来越便宜.寄存器文件在层次结构中位于最顶部,也就是第0级或记为L0.这里我们展示的是三层高速缓存L1到L3,占据存储器层次结构的第1层到第3层.主存在第4层,以此类推存储器层次结构的主要思想是一层上的存储器作为低一层存储器的高速缓存.因此,寄存器文件就是L1的高速缓存,L1是L2的高速缓存,L2是L3的高速缓存,L3是主存的高速缓存,而主存又是磁盘的高速缓存.在某些具有分布式文件系统的网络系统中,本地磁盘就是存储在其他系统中磁盘上的数据的高速缓存.

 

晚安!

 

目录
相关文章
|
7月前
disk 4k
disk 4k
28 1
|
Linux
Linux - How to Take ‘Snapshot of Logical Volume and Restore’ in LVM
Linux - How to Take ‘Snapshot of Logical Volume and Restore’ in LVM
99 0
|
关系型数据库 MySQL 数据库
disk 100%场景优化
disk 100%场景优化
114 0
disk 100%场景优化
|
SQL Oracle 关系型数据库
Oracle Move a Datafile from Filesystem & ASM
-------------------------------------------------------by acdante--------------------------------------------------- 非系统表空间数据文件 前提 数据库版本:Oracle 11.
1906 0
|
安全 Windows 虚拟化
|
虚拟化 Windows
|
文字识别 Oracle 关系型数据库